vous pouvez utiliser detox
par Doug Harple
detox -r <folder>
Utilisez rename
(alias prename
) qui est un script Perl qui se trouve peut-être déjà sur votre système. Faites-le en deux étapes :
find . -name "* *" -type d | rename 's/ /_/g' # do the directories first
find . -name "* *" -type f | rename 's/ /_/g'
Basé sur Jürgen répondre et capable de gérer plusieurs couches de fichiers et de répertoires dans une seule limite en utilisant la version "Révision 1.5 1998/12/18 16:16:31 rmb1" de /usr/bin/rename
(un script Perl) :
find /tmp/ -depth -name "* *" -execdir rename 's/ /_/g' "{}" \;
J'utilise :
for f in *\ *; do mv "$f" "${f// /_}"; done
Bien que ce ne soit pas récursif, c'est assez rapide et simple. Je suis sûr que quelqu'un ici pourrait le mettre à jour pour qu'il soit récursif.
Le ${f// /_}
part utilise le mécanisme d'expansion des paramètres de bash pour remplacer un motif dans un paramètre par la chaîne fournie. La syntaxe pertinente est ${parameter/pattern/string}
. Voir :https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html ou http://wiki.bash-hackers.org/syntax/pe .
find . -depth -name '* *' \
| while IFS= read -r f ; do mv -i "$f" "$(dirname "$f")/$(basename "$f"|tr ' ' _)" ; done
Je n'ai pas réussi au début, car je n'avais pas pensé aux répertoires.