Le 18/09/2010 23:47, Goldy a écrit :
J'y vais de mon petit script à moi, invoqué seul, il remplace les espaces par des underscores, invoqué avec un paramètre quelconque, il remplace les underscores par des espaces.Le 18/09/2010 13:41, Nicolas Roudninski a écrit :Bonjour à tous, J'imagine que cette question a du être maintes fois soulevée mais j'ai beau googeliser, je ne trouve pas de réponse satisfaisante... Je dispose d'une grande collection de musique organisée en sous répertoires (Artiste/Albums/titre ou Artiste/Albums/disque-n/Titre). Or je voudrais remplacer dans tous les répertoires et fichiers, les espaces par des underscores. J'ai tenté : find /opt/audio -exec rename 's/\s+/_/g' {} \; Mais évidemment, ça me répond "/opt/audio/un artiste/un album/ Aucun fichier ou répertoire de ce type" vu que le répertoire "un artiste" est devenu "un_artiste". J'espère me faire bien comprendre. Donc je cherche une commande, un script qui pourrait remplacer tous les espaces en underscores en une seule fois. Vous auriez ça sous le coude ? Cordialement, Nicolas Roudninski
-- Luc Schimpf www.au-ptit-bon-air.eu
#! /bin/bash [ $# -eq 0 ] && command=removspace || command=restorspace echo "command = $command" explor () { for file in "$1"/*; do [ -f "$file" ] && $2 "$file" [ -d "$file" ] && $2 "$file" done } removspace () { a=`echo "$1" | tr "[:blank:]" "_"` mv "$1" "$a" &> /dev/null [ -d "$a" ] && explor "$a" removspace } restorspace () { b=$(echo $1 | sed 's/_/ /g') mv "$1" "$b" &> /dev/null [ -d "$b" ] && explor "$b" restorspace } for repert in * ; do [ -d "$repert" ] && $command "$repert" [ -f "$repert" ] && $command "$repert" done