Bonjour,
En m'appuyant sur ce que j'ai trouvé ici et ailleurs, j'ai fait une fonction bash pour renommer les fichiers en partant d'un "find".
La fonction est la suivante :
Cette fonction est appelée de la manière suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 function common_renomme_propre { newfile=$(echo "$1" | sed -e "y/\/ÀÂÄâäàÊËÈÉéèêëÎÏîïÔÖôöÛÜûüùŶŷÿ/\/AAAaaaEEEEeeeeIIiiOOooUUuuuYYyy/; s/[ \t]/_/g; s/[^\/0-9a-zA-Z_.-]//g") if [ "$1" != "$newfile" ]; then echo "====================================" && echo "N'existe pas $1" && echo "====================================" # cp -v "$0" "$newfile" >/dev/null 2>&1 echo $1 echo $newfile mv -v "$1" $(echo "$1" | sed -e "y/\/ÀÂÄâäàÊËÈÉéèêëÎÏîïÔÖôöÛÜûüùŶŷÿ/\/AAAaaaEEEEeeeeIIiiOOooUUuuuYYyy/; s/[ \t]/_/g; s/[^\/0-9a-zA-Z_.-]//g") else echo "existe $1" fi } export -f common_renomme_propre
Là où je ne comprend plus, c'est que j'ai comme résultat du mv un truc du genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part find $source -type f -name "*.*" -exec bash -c 'common_renomme_propre "$0"' {} \; ;
alors que $1 et $newfile sont bien reconnus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part mv: impossible de déplacer '/home/aenean/essai/mediacenter/Vidéos/1._normal/documentaires/nom du fichier.xxx' vers '/home/aenean/essai/mediacenter/Videos/1._normal/documentaires/nom_du_fchier.xxx': Aucun fichier ou dossier de ce type
Si quelqu'un peut éclairer ma lanterne, je l'en remercie par avance.
Partager