#1 Le 03/11/2016, à 12:50
- csm
Remplacer : dans des fichiers et dossier en masse et récursivement
Bonjour,
j'ai des milliers de fichiers et dossiers qui ont été importés depuis un vieux mac. Malheureusement, de nombreux fichiers et dossiers contiennent le caractère : qui me pose problème car on travaille dans une environnement mixte windows / ubuntu / mac os.
Je cherche donc une commande sûre pour remplacer le caractère : dans tous les noms de fichier et de dossier par un autre caractère (par exemple _ ) et ce récursivement (il y a des milliers de dossiers et des dizaines de milliers de fichiers, avec parfois une profondeur de 10-15 dossiers).
Pourriez-vous m'aider ? Merci !
Hors ligne
#2 Le 03/11/2016, à 13:26
- Shanx
Re : Remplacer : dans des fichiers et dossier en masse et récursivement
Salut,
Commande pour tester :
find /search/path -depth -name '*:*' -execdir bash -c 'echo mv "$1" "${1//:/_}"' _ {} \;
Si le résultat te convient, tu peux retirer le "echo" pour lancer la commande.
Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied
Hors ligne
#3 Le 03/11/2016, à 13:37
- pingouinux
Re : Remplacer : dans des fichiers et dossier en masse et récursivement
Bonjour,
J'ai été devancé, mais je propose ceci
find repertoire_de_depart -depth -execdir rename 's/:/_/g' {} \;
À tester sur un petit répertoire. Si le nouveau nom existe déjà, on ne modifie pas l'ancien.
Dernière modification par pingouinux (Le 03/11/2016, à 13:37)
Hors ligne
#4 Le 03/11/2016, à 14:04
- gigiair
Re : Remplacer : dans des fichiers et dossier en masse et récursivement
Je suis pour la soluntion #3, on peut ajouter l'option -n à la commande rename pour afficher les remplacements qui seront effectués sans procéder au remplacement. puis si l'essai est concluant un deuxième passage sans cette option.
find repertoire_de_depart -depth -execdir rename -n 's/:/_/g' {} \;
--
JJR.
Hors ligne
#5 Le 03/11/2016, à 14:13
- Shanx
Re : Remplacer : dans des fichiers et dossier en masse et récursivement
Attention, j'avais lu que rename peut avoir des problèmes si le motif se trouve dans le nom du fichier et dans celui du répertoire parent.
Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied
Hors ligne
#6 Le 03/11/2016, à 16:28
- pingouinux
Re : Remplacer : dans des fichiers et dossier en masse et récursivement
Attention, j'avais lu que rename peut avoir des problèmes si le motif se trouve dans le nom du fichier et dans celui du répertoire parent.
Avec -depth, on renomme d'abord les fichiers et répertoires les plus profonds dans l'arborescence.
Avec -execdir, {} ne contient que le nom du basename.
Hors ligne
#7 Le 04/11/2016, à 10:30
- csm
Re : Remplacer : dans des fichiers et dossier en masse et récursivement
Merci, finalement j'ai utilisé la commande Shanx et tout a l'air de s'être bien passé. J'ai gardé une trace de toutes les modifications effectuées au cas où...
Merci à tous
Hors ligne
#8 Le 04/11/2016, à 18:00
- Hizoka
Re : Remplacer : dans des fichiers et dossier en masse et récursivement
si c'est ok, ajoute un petit [resolu] dans le titre du topic
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne