GNU/Linux >> Tutoriels Linux >  >> Linux

Comment remplacer les espaces dans les noms de fichiers à l'aide d'un script bash

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.


Linux
  1. Comment déboguer un script bash ?

  2. Comment renommer un fichier sous Linux ?

  3. Comment connaître le nom du fichier de script dans un script Bash ?

  4. Comment mettre en surbrillance les scripts Bash dans Vim ?

  5. Comment lire l'avant-dernière ligne d'un fichier avec Bash ?

Comment lire un fichier ligne par ligne dans Bash

Comment afficher les boîtes de dialogue de l'interface graphique dans le script bash à l'aide de Zenity

35 exemples de scripts bash

Comment changer automatiquement l'arrière-plan de GNOME par intervalles à l'aide de BASH

Comment exécuter un script bash

Comment grep pour unicode � dans un script bash