D'abord il serait intéressant que tu nous indiques de façon exhaustive quels sont les caractères à remplacer.
Ensuite comme tu l'as dit, sed est ton ami, mais ça ne suffira pas. sed pourra t'aider à générer le nouveau nom, mais ce n'est pas lui qui renommera tes fichiers: c'est la commande mv.
Come tu débutes, l'idéal à mon avis serait que tu procèdes par étapes :
dans un premier temps générer une liste des fichiers source dans un fichier via find par exemple. Un truc du genre "cd rep_ou_sont_mes_fichiers; find . >/tmp/liste_fichiers.txt"
ensuite remplacer toutes les occurences de tes caractères "bizarres" par un nouveau caractère : un truc du genre
>/tmp/fichier_cmd
while read a
do
echo "mv $a /chemin/vers/cible/$(echo $a | sed 's/caractere_a_remplacer/nouveau_caractere/g')" >>/tmp/fichier_cmd
done
tu vérifies que fichier_cmd contient bien ce que tu veux, et que les caracteres que tu ne veux pas sont bien supprimés comme demandé.
Ensuite tu fais un sh /tmp/fichier_cmd pour exécuter la copie (en te positionnant bien dans le répertoire contenant les fichier que tu as copiés.
Si tu veux pouvoir rejouer pulsieurs fois le script, tu fais une copie (cp) à la place du renommage (mv). en cas de problème tu n'auras qu'à supprimer les copies et recommencer.
Je n'ai pas testé le truc, c'est juste une piste. Dans le détail il y aura peut-être quelques améliorations à faire. En tout cas pour ma part c'est à peu près ce que je ferais (peut-être en utilisant awk au lieu de sed mais c'est une autre histoire).
# Identifier les caractères à remplacer, et par quoi.
Posté par totof2000 . En réponse au message Renommer plusieurs fichiers en même temps. Évalué à 2.
D'abord il serait intéressant que tu nous indiques de façon exhaustive quels sont les caractères à remplacer.
Ensuite comme tu l'as dit, sed est ton ami, mais ça ne suffira pas. sed pourra t'aider à générer le nouveau nom, mais ce n'est pas lui qui renommera tes fichiers: c'est la commande mv.
Come tu débutes, l'idéal à mon avis serait que tu procèdes par étapes :
dans un premier temps générer une liste des fichiers source dans un fichier via find par exemple. Un truc du genre "cd rep_ou_sont_mes_fichiers; find . >/tmp/liste_fichiers.txt"
ensuite remplacer toutes les occurences de tes caractères "bizarres" par un nouveau caractère : un truc du genre
>/tmp/fichier_cmd
while read a
do
echo "mv $a /chemin/vers/cible/$(echo $a | sed 's/caractere_a_remplacer/nouveau_caractere/g')" >>/tmp/fichier_cmd
done
tu vérifies que fichier_cmd contient bien ce que tu veux, et que les caracteres que tu ne veux pas sont bien supprimés comme demandé.
Ensuite tu fais un sh /tmp/fichier_cmd pour exécuter la copie (en te positionnant bien dans le répertoire contenant les fichier que tu as copiés.
Si tu veux pouvoir rejouer pulsieurs fois le script, tu fais une copie (cp) à la place du renommage (mv). en cas de problème tu n'auras qu'à supprimer les copies et recommencer.
Je n'ai pas testé le truc, c'est juste une piste. Dans le détail il y aura peut-être quelques améliorations à faire. En tout cas pour ma part c'est à peu près ce que je ferais (peut-être en utilisant awk au lieu de sed mais c'est une autre histoire).