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 rename
commande 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 rename
commande pour ce faire?
Réponses:
perl
« s rename
(comme généralement sur Debian où il est aussi appelé prename
), ou ce dérivé ( rename
package sur Debian):
rename 's/\.tif$//' *.tif
util-linux
rename
(comme on le trouve généralement sur Red Hat, rename.ul
sur 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.tmp
extension 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.
rename
est incompatible avec (et beaucoup plus limitée que) la rename
commande traditionnelle de perl
.
.oldext
dans le nom de fichier, pas nécessairement l'extension ( foo.oldextasy.oldext
serait renommée footasy.oldext
).
pouvons-nous rendre cela récursif
for i in *.gz; do mv -i $i `basename $i .gz`; done