Comment renommer tous les fichiers/sous-répertoires du dossier actuel ?
Disons que j'ai de nombreux fichiers et sous-répertoires contenant des espaces et que je souhaite remplacer tous les espaces par un trait de soulignement.
File 1
File 2
File 3
Dir 1
Dir 3
devrait être renommé en
File_1
File_2
File_3
Dir_1
Dir_3
Réponse acceptée :
Si vous avez également besoin de renommer des fichiers dans des sous-répertoires et que votre find
prend en charge le -execdir
prédicat, alors vous pouvez faire
find /search/path -depth -name '* *'
-execdir bash -c 'mv -- "$1" "${1// /_}"' bash {} ;
Merci à @glenn jackman pour avoir suggéré -depth
option pour find
et me faire réfléchir.
Notez que sur certains systèmes (y compris ceux de GNU/Linux), find
peut ne pas trouver les fichiers dont le nom contient des espaces et également des séquences d'octets qui ne forment pas de caractères valides (typique avec des fichiers multimédias avec des noms avec des caractères non-ASCII encodés dans un jeu de caractères différent de celui des paramètres régionaux). Définition des paramètres régionaux sur C
(comme dans LC_ALL=C find...
) résoudrait le problème.