Bonjour , j ' ai recuperer une foule de fichiers donc les noms sont tres laids et que je voudrais renommer selon certains criteres et supprimer des caracteres speciaux dans les noms .
exemple : [nom.de.fichier]blablobli.jpg
je voudrais donc qu il soit transformé par : blablobli.jpg ( jusque la en faisant des recherches internet j' ai trouvé un script qui fait le boulot , mais il ne descend pas dans les sous-repertoires .
donc comment faire pour avoir un script ( ou autre ) qui remplace une expression du type [test] par " rien " et qu il opère aussi dans les sous répertoires .
aidez moi svp , j 'ai 3000 photos a renommer …
# find + exec
Posté par totof2000 . Évalué à 4.
Si tu veux exécuter une commande sur toute une arborescence tu utilises find . -exec
[^] # Re: find + exec
Posté par iznobe . Évalué à 1.
c ' est ce que j ' ai fais pour le depart de mon script , mais je me retouve confronter au probleme lié a la recursivité .
Dans le retour de la commande find je recupere le chemin complet relatif au pwd du coup dans la commande exec il faut que je recupere uniquement le nom du fichier , mais je n' ai pas trouver comment faire .
[^] # Re: find + exec
Posté par totof2000 . Évalué à 4.
man basename
[^] # Re: find + exec
Posté par iznobe . Évalué à 1.
super merci !!!
[^] # Re: find + exec
Posté par Michaël (site web personnel) . Évalué à 3.
Tu peux aussi faire
find … | sed -e 's@.*/@@'
qui sera bien plus rapide puisque la version avecbasename
lancera un programme par fichier trouvé, alors qu'avec le pipe tu as en tout et pour tout deux programmes quoi qu'il arrive!# 3 pistes
Posté par alouali (site web personnel) . Évalué à 2.
Et tout ça d'abord sur une copie (au moins partielle) pour tester que tout fonctionne comme prévu !
[^] # Re: 3 pistes
Posté par Marc Quinton . Évalué à 3.
ca traite du sujet ici : http://stackoverflow.com/questions/2372719/using-sed-to-mass-rename-files (bash mass renaming).
[^] # Re: 3 pistes
Posté par iznobe . Évalué à 1.
Hello ,
mais dans ce sujet il ne traite pas de recursivité …
[^] # Re: 3 pistes
Posté par Michaël (site web personnel) . Évalué à 2.
Il est aussi traité là: http://stackoverflow.com/questions/20629302/better-way-to-rename-files-based-on-multiple-patterns/25597051#25597051 :)
# Utilise `rename`
Posté par Jiehong (site web personnel) . Évalué à 7.
Il me semble que
rename
est installé par défaut, et il te laisse faire du remplacement.Exemple :
Cette commande va remplacer la première occurrence de
[nom.de.fichier]
par une chaine de caractères vide dans tous les fichiers jpg du répertoire courant.Si tu utilises zsh, alors tu peux simplement lancer cette commande de manière récursive :
Si tu veux plus compliqué, je ne te conseille pas d'utiliser awk/sed/etc., car tu vas forcément oublié des cas particuliers. Dans ce cas, je ne peux que te recommander
krename
, comme recommandé précédemment.[^] # Re: Utilise `rename`
Posté par kna . Évalué à 3.
Note que tu décris le rename fourni avec coreutils. Certaines distribs (debian notamment) fournissent (du moins par défaut) la commande rename de CPAN, dont la syntaxe est différente (à la sed) : https://metacpan.org/pod/distribution/File-Rename/rename.PL
[^] # Re: Utilise `rename`
Posté par Michaël (site web personnel) . Évalué à 2.
C'est la meilleure proposition (la plus simple)! :)
[^] # Re: Utilise `rename`
Posté par palm123 (site web personnel) . Évalué à 2.
oui, la doc
http://h71000.www7.hp.com/doc/84final/9996/9996pro_162.html
ウィズコロナ
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.