|
|
|
|
Posté par
Vic, le mardi 6 novembre 2007 à 07:55:43for f in `find . -type f -name "*.jpg" `; do
mv -T "$f" "${f/Â/_}"
done
mv: ne peut évaluer `./300': Aucun fichier ou répertoire de ce type mv: ne peut évaluer `de': Aucun fichier ou répertoire de ce type mv: ne peut évaluer `Frank': Aucun fichier ou répertoire de ce type mv: ne peut évaluer `Miller': Aucun fichier ou répertoire de ce type mv: ne peut évaluer `2007/300': Aucun fichier ou répertoire de ce type mv: ne peut évaluer `Comic': Aucun fichier ou répertoire de ce type mv: ne peut évaluer `Con': Aucun fichier ou répertoire de ce type mv: ne peut évaluer `2006/300Comicon_044.jpg': Aucun fichier ou répertoire de ce type mv: ne peut évaluer `./300': Aucun fichier ou répertoire de ce type mv: ne peut évaluer `de': Aucun fichier ou répertoire de ce type mv: ne peut évaluer `Frank': Aucun fichier ou répertoire de ce type mv: ne peut évaluer `Miller': Aucun fichier ou répertoire de ce type
Configuration: Windows Vista Internet Explorer 7.0
Salut,
En fait oui c'est bien une histoire d'espace, dû non pas à la commande "find" mais à la boucle "for" et plus particulièrement à la valeur de la variable d'environnement "$IFS" (Input Field Separator), qui par défaut a pour valeur l'espace et tabulation et à qui il faut assigner la valeur "saut de ligne" (\n) : OLD_IFS="$IFS"
IFS=$'\n'
for f in $(find . -type f -name "*.jpg"=; do
mv -T "$f" "${f/Â/_}"
done
IFS="$OLD_IFS"Devrait marcher bien mieux.
Sinon une autre façon de faire est passer par une boucle "while", voir à ce sujet cette astuce dans la FAQ. ;-)) Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
Ah super ! Merci, je connaissais pas ça... enfin c'est pas étonnant, j'ai raté quelques cours de shell :p
Sinon j'ai un autre soucis du coup... j'aimerais remplacer le caractère ° par _ dans ma boucle précédente... mais on dirait que cela ne fonctionne pas, car aucun fichier n'est modifié... Pourtant j'utilise la même boucle : for f in `find . -type f -name "*.jpg" `; do
mv -T "$f" "${f/°/_}"
done
|
En fait je dois être nouille mais cela ne marche pas :
for f in `find . -type f -name "*.jpg" `; do
mv -T "$f" "${f/\°/_}"
done
Aucun fichier n'est modifié :( Please help!!! |
Attends là ! Faudrait qu'on se comprenne bien :-\
Le caractère " * " se trouve bien dans le nom de tes fichiers ? Ou tu me parles d'autre chose !? [tmpfs]$ var="mon * étoile"
[tmpfs]$ echo "$var"
mon * étoile
[tmpfs]$ echo ${var/\*/_}
mon _ étoile
[tmpfs]$ ;-)
Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé.
|
Arf désolé, problème d'affichage ;-((
Bon mais en fait ça change pas grand chose : [tmpfs]$ var="mon n° à moi"
[tmpfs]$ echo ${var/°/_}
mon n_ à moiSi tu as des problèmes, affiches un exemple avec ton code et l'erreur générée.
Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé.
|
Et les noms de tes fichiers dans le répertoire ils ressemble à quoi ?
Affiche un listing s'il te plaît "ls -1" (c'est un 1 (chiffre un) et pas un L minuscule, hein ?) Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
Jury_n_°001.jpg Jury_n_°002.jpg Jury_n_°003.jpg Jury_n_°004.jpg Jury_n_°005.jpg Jury_n_°006.jpg ... Jury_n_°021.jpg Jury_n_°022.jpg |
Ben je comprends pas non plus ;-\ [tmpfs]$ touch Jury_n_°00{1,2,3,4,5}.jpg
[tmpfs]$ ls -1
Jury_n_°001.jpg
Jury_n_°002.jpg
Jury_n_°003.jpg
Jury_n_°004.jpg
Jury_n_°005.jpg
[tmpfs]$ for f in *; do mv "$f" ${f/°/_}; done
[tmpfs]$ ls -1
Jury_n__001.jpg
Jury_n__002.jpg
Jury_n__003.jpg
Jury_n__004.jpg
Jury_n__005.jpg
[tmpfs]$Essaie d'exécuter ton script en mode débogage, ajoute "set -xv" après la ligne "shebang" (#! /bin/bash) et essaie de repérer où ça coince...
Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé.
|
Salut,
ça ne te conviens pas la commande rename ? rename 's/_\W/__/' Jury*.jpg lami20j |
Ce n'est pas la peine d'échapper le "°" (${f/\°/_}), ce n'est pas un méta-caractère du shell !
Il ne te renvoie que ça comme sortie le débogage ? Il en manque là, non ? Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
heu non rename ca va pas trop, car les noms de fichiers sont jamais idnetiques, à part dans cet exemple.... |
car les noms de fichiers sont jamais idnetiques, à part dans cet exemple
ben, justement, on peut utiliser les regex et c'est très puissant si on reviens à ton problème de début remplacer le caractère  par _ dans tous les noms de fichier .jpg on aura ça rename 's/\xC2/_/' *.jpg lami20j
|
find . -name '*.jpg' -exec rename 's/°/_/' {} \;mais il faut voir qu'il s'agit bien de °il faut voir le code ascii de ce caractère pour être sur qu'on cherche le bon caractère
lami20j |
en fait le soucis vient de là je pense, c'est que je n'utilisais pas le code ascii du caractère °...
Bon ben merci à tous, je vais tester cela, et je vous tiendrais au courant... histoire d'aider un jour un galérien comme moi :) |
| 03/03 15h50 | [Bash] Afficher un fichier sans les lignes de commentaires | Bash |
| 29/12 20h42 | Guide d'utilisation du Shell pour débutant | Shell |
| 17/11 11h21 | [Shell] Tester une variable numérique | Shell |
| 23/03 20h06 | Sed - Insérer des espacements | Sed |
| 08/01 16h37 | Libérer de l'espace sur la partition système | Windows XP |
| 07/05 16h22 | SHELL Boucles | 3 |
| 12/11 11h48 | Commande shell pour l'espace disque. | 3 |
| 21/05 11h43 | [Shell] Restriction speciale dans un find | 6 |
| 14/05 16h38 | [Shell] Rejeter sous-répertoire cmmd find | 4 |
![]() | SSH Secure Shell - SSH secure shell for workstations est un client SSH flexible permettant de se connecter de façon sécurisée à des... | Catégorie: Telnet/SSH Licence: Open Source |
![]() | FinderCleaner - FinderCleaner est un utilitaire qui permet de supprimer les fichiers cachés spécifiques aux Mac. Il efface les... | Catégorie: Gestion de fichiers Licence: Freeware/gratuit |
![]() | Super Finder - Etes-vous frustrés d'utiliser le moteur de recherche par défaut sur Windows ? Et bien utilisez Super Finder. Super Finder... | Catégorie: Gestion de fichiers Licence: Freeware/gratuit |
![]() | Clic espace - L'application Clic-Espace permet d'utiliser le clic gauche à la place de la touche espace. L'ergothérapeute Guillaume Hessel... | Catégorie: Bureautique Licence: Freeware/gratuit |
![]() | Shellshock: Nam 67 | Catégorie: Jeu vidéo Xbox | 3.00 € Micromania |
![]() | M and M's Shell | Catégorie: Jeu Playstation | |
![]() | Finding Nemo 2 | Catégorie: Jeu vidéo Gameboy Advance | |
![]() | Finding Nemo : The | Catégorie: Jeu vidéo Gameboy Advance |