2010-11-22 16 views
0

En espérant que quelqu'un puisse m'aider, j'ai besoin de supprimer des espaces (ne pas remplacer par des traits de soulignement) de plusieurs milliers de fichiers sur un système avec cygwin. Puis-je faire cela à partir du shell en utilisant renommer ou mv en quelque sorte?Comment supprimer des espaces de nombreux noms de fichiers sous Cygwin

Actuellement:

fichier

One.mp3
fichier two.mp3

Tous les fichiers doivent être:

fileone.mp3

filetwo.mp3

Merci

Répondre

1

La valeur par défaut shell bash Cygwin est, donc ...

Essayez cette ligne de commande, en remplaçant $ DIR avec le répertoire dans lequel vous souhaitez effectuer ladite conversion, et vérifiez la sortie:

find $DIR -type f -name '* *' | while read f; do d="${f%/*}"; f="${f##*/}"; echo mv "$d/$f" "$d/${f// }"; done 

Si vous sont satisfaits des commandes qui seront exécutées, il suffit de supprimer l'écho avant mv et de répéter pour exécuter le changement de nom. Notez que cela ne fera que renommer les fichiers, mais pas les répertoires.

+0

Parfait merci! :) – GWC

+1

Je suis toujours étonné de voir à quel point les choses peuvent être si compliquées dans les coquilles UNIX ... – Joey

0

En plus de la réponse ci-dessus pour changer le nom du fichier, le code est ici pour changer les noms de répertoire:

find $DIR -type d -name '* *' | while read f; do d="${f%/*}"; f="${f##*/}"; echo mv "$d/$f" "$d/${f// }"; done 

La seule différence est le quatrième argument du début de la ligne. La lettre "f" est changée en "d", correspondant respectivement au fichier et au répertoire.