Tengo varios archivos tiff llamados:
sw.001.tif
sw.002.tif
...
y quiero eliminar el .tif
al final de cada uno de los archivos. ¿Cómo puedo usar el rename
comando para hacer esto?
Tengo varios archivos tiff llamados:
sw.001.tif
sw.002.tif
...
y quiero eliminar el .tif
al final de cada uno de los archivos. ¿Cómo puedo usar el rename
comando para hacer esto?
Respuestas:
perl
's rename
(como se encuentra típicamente en Debian donde también se llama prename
), o este derivado ( rename
paquete en Debian):
rename 's/\.tif$//' *.tif
util-linux
rename
(como se encuentra típicamente en Red Hat, rename.ul
en Debian):
rename -- .tif '' *.tif
(tenga en cuenta que se cambiaría el nombre blah.tiffany.tif
a blahfany.tif
)
Para un cambio de nombre, puede hacer:
$ for i in *.tif; do mv -i $i `basename $i .tif`; done
(-i para advertir contra la sustitución de un archivo)
for i in ./*.tif; do mv -i "$i" "${i%.tif}"; done
rename -- .oldext .newext *.oldext
Esto sustituye la antigua extensión por la nueva. Para eliminar simplemente la extensión, puede pasar explícitamente una cadena vacía como argumento.
rename -- .gz.tmp '' *.gz.tmp
Con el comando anterior, todos los archivos con .gz.tmp
extensión en la carpeta actual serán renombrados filename.gz
.
Consulte el artículo: Linux: elimine las extensiones de archivo para varios archivos para obtener más detalles.
rename
es incompatible con (y mucho más limitada que) el rename
comando tradicional de perl
.
.oldext
dentro del nombre del archivo, no necesariamente la extensión ( foo.oldextasy.oldext
sería renombrada como footasy.oldext
).
podemos hacer esto recursivo
for i in *.gz; do mv -i $i `basename $i .gz`; done