J'ai un certain nombre de fichiers tiff nommés:
sw.001.tif
sw.002.tif
...
et je veux supprimer le .tifà la fin de chacun des fichiers. Comment puis-je utiliser la renamecommande pour ce faire?
J'ai un certain nombre de fichiers tiff nommés:
sw.001.tif
sw.002.tif
...
et je veux supprimer le .tifà la fin de chacun des fichiers. Comment puis-je utiliser la renamecommande pour ce faire?
Réponses:
perl« s rename(comme généralement sur Debian où il est aussi appelé prename), ou ce dérivé ( renamepackage sur Debian):
rename 's/\.tif$//' *.tif
util-linux rename(comme on le trouve généralement sur Red Hat, rename.ulsur Debian):
rename -- .tif '' *.tif
(notez que que l' on pourrait renommer blah.tiffany.tifà blahfany.tif)
Pour un non-renommage, vous pouvez faire:
$ for i in *.tif; do mv -i $i `basename $i .tif`; done
(-i pour mettre en garde contre le remplacement d'un fichier)
for i in ./*.tif; do mv -i "$i" "${i%.tif}"; done
rename -- .oldext .newext *.oldext
Cela remplace l'ancienne extension par la nouvelle. Pour supprimer simplement l'extension, vous pouvez explicitement passer une chaîne vide comme argument.
rename -- .gz.tmp '' *.gz.tmp
Avec la commande ci-dessus, tous les fichiers avec .gz.tmpextension dans le dossier actuel seront renommés filename.gz.
Reportez-vous à l'article: Linux: supprimez les extensions de fichier pour plusieurs fichiers pour plus de détails.
renameest incompatible avec (et beaucoup plus limitée que) la renamecommande traditionnelle de perl.
.oldextdans le nom de fichier, pas nécessairement l'extension ( foo.oldextasy.oldextserait renommée footasy.oldext).
pouvons-nous rendre cela récursif
for i in *.gz; do mv -i $i `basename $i .gz`; done