J'ai un certain nombre de fichiers dans un dossier et je souhaite remplacer chaque caractère d'espace dans tous les noms de fichier par des traits de soulignement. Comment puis-je atteindre cet objectif?
96
Cela devrait le faire:
for file in *; do mv "$file" `echo $file | tr ' ' '_'` ; done
1 - foo.jpg
et mon dossier contenait déjà1.jpg
.for file in *; do mv "$file" $(echo $file | tr ' ' '_') ; done
*
àPATH_TO_YOUR_DIRECTORY
.Je préfère utiliser la commande 'renommer', qui prend les expressions rationnelles de style Perl:
Vous pouvez faire un essai avec l'option -n:
la source
rename " " "_" *
rename
non disponible sous OSX il apparaît.rename
est disponible.Utilisez sh ...
Si vous voulez essayer ceci avant d'appuyer sur la gâchette, passez simplement
mv
àecho mv
.la source
Si vous utilisez bash:
la source
mv --help' for more information. mv: when moving multiple files, last argument must be a directory Try
mv --help 'pour plus d'informations.mv --help' for more information. mv: missing file argument Try
mv --help 'pour plus d'informations. mv: argument de fichier manquant Essayezmv --help' for more information. mv: missing file argument Try
mv --help 'pour plus d'informations.Que faire si vous souhaitez appliquer la tâche de remplacement de manière récursive ? Comment feriez-vous cela?
Eh bien, je viens de trouver la réponse moi-même. Pas la solution la plus élégante, (essaie également de renommer les fichiers qui ne sont pas conformes à la condition) mais cela fonctionne. (BTW, dans mon cas, j'avais besoin de renommer les fichiers avec '% 20', pas avec un trait de soulignement)
la source
Essayez quelque chose comme ça, en supposant que tous vos fichiers étaient .txt:
la source
tr --help' for more information. mv: missing file argument Try
mv --help 'pour plus d'informations.Voici une autre solution:
la source
Citez vos variables:
Supprimez l '"écho" pour effectuer le changement de nom réel.
la source
\'1130 lake micigan view.jpg\'': No such file or directory mv: cannot stat
\ '1130_1_bedroom_floor_plan.jpg \' ': aucun fichier ou répertoire de ce type mv: impossible de stat\'1130_BedPicture_8.jpg\'': No such file or directory mv: cannot stat
\' 1130_diningroom_table.jpg \ '': aucun fichier ou répertoire de ce typeLe moyen le plus simple de remplacer une chaîne (caractère espace dans votre cas) par une autre chaîne
Linux
consiste à utilisersed
. Vous pouvez le faire comme suitJ'espère que cela t'aides.
la source
Je crois que votre réponse est dans Remplacer les espaces dans les noms de fichiers par des traits de soulignement .
la source
Pour renommer tous les fichiers avec une
.py
extension, utilisez,find . -iname "*.py" -type f | xargs -I% rename "s/ /_/g" "%"
Exemple de sortie,
la source