+1 Cette solution fonctionne même si vous avez des espaces dans le nom de fichier, mais vous voulez dire "$ f" au lieu de "f".
Adam Zalcman
L'expansion des paramètres de Shell est un peu cryptique, on pourrait utiliser le nom de base à la place: pour f dans * .JPG; do mv "$ f" "` basename $ f .JPG`.jpg "; fait
math
@math: Je préfère ma version car elle fonctionne avec des noms de fichiers contenant des espaces et fonctionnera également avec /path/to/*.JPG. Vous êtes invités à soumettre votre propre réponse, bien sûr :)
Johnsyweb
Bien sûr, le nom de base supprimera les principaux répertoires mais fonctionnera avec les espaces à l'intérieur des noms de fichiers. (Je ne pense pas que cela mérite une réponse;) alors je l'ai posté comme commentaire)
math
10
Si vous pouvez utiliser des outils externes (pas seulement bash), vérifiez la renamecommande!
Il serait assez facile de faire fonctionner cela pour les fichiers avec des espaces dans le nom: ajoutez simplement des guillemets doubles autour des deux arguments mv.
Adam Zalcman
Je n'ai pas d'espace. Que dois-je ajouter pour que cela se produise dans le répertoire CURRENT. Pour le moment, je reçois une erreur - mv: ne peut pas stat `* .JPG ': Aucun fichier ou répertoire
Réponses:
Utilisation de l' extension des paramètres du shell :
Les
"
personnages prendront soin des noms de fichiers contenant des espaces, comme le font souvent les photographies.la source
/path/to/*.JPG
. Vous êtes invités à soumettre votre propre réponse, bien sûr :)Si vous pouvez utiliser des outils externes (pas seulement bash), vérifiez la
rename
commande!Le
rename
fait partie deutil-linux
.la source
perl
accepte différents arguments pour faire la même chose.Si vous avez des espaces dans les noms de fichiers:
la source
Je suggère de jeter un œil à la
mmv
commande. Il convient parfaitement à ce type de tâches. Dans votre scénario, ce serait:La page de manuel regorge d'exemples, il ne faut donc pas de temps pour s'y habituer.
Sur les systèmes Debian , il peut être installé avec:
la source
si vous n'avez pas d'espace dans les noms de fichiers:
la source
mv
.