Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

bash et espaces dans les noms de fichiers

11 réponses
Avatar
Bruno
Bonjour à tous,

Je fais parfois des petits scripts utilitaires pour effectuer des travaux
trop longs à faire à la main...

Mais quand il s'agit de manipuler des fichiers dont les noms comprennent
des espaces, ça coince. Par exemple :

for file in *.mp3
do mp3gain -r $file
done

... ne marche pas car $file ne contient pas le nom complet du fichier, mais
seulement le début jusqu'au premier espace. Le fichier est donc
inaccessible pour le processus invoqué...

Vous allez me dire qu'il serait préférable de remplacer les espaces par
des sous-lignes (_), mais il faudrait que j'écrive un script pour faire ça
sur tous mes fichiers. ;-)
Bon, je l'ai envisagé mais c'est le plan B.

Pour le plan A, je préférerais une autre solution si vous en avez une à
me proposer...

Merci.

1 réponse

1 2
Avatar
Fabien LE LEZ
On Sat, 14 Apr 2007 20:35:33 +0200, Bruno :

for file in *.mp3
do mp3gain -r $file
done


Je réponds un peu tard, désolé...

Je ne connais pas de manière de faire ça avec for ; par contre, le
couple find/xargs pourrait t'aider ici :

find -name *.mp3 -print0 | xargs -0 -n 1 mp3gain -r

1 2