Tenga en cuenta que NINGÚN sistema de archivos de Linux o Unix utiliza "extensiones" de Windows o VMS - es solo por convención que un sufijo del nombre del archivo es ".tif" o ".c" o ".o" o ".so " o lo que sea.
Bruce Ediger
Eso está bien ... Estoy importando archivos de Windows a Linux :)
Paul
1
Técnicamente hablando, Windows tampoco usa extensiones de archivo, es solo que el administrador de archivos de Windows 95 siguió usando los últimos caracteres del nombre de archivo para determinar el tipo de archivo después de romper el esquema de nomenclatura de MS-DOS y la convención ha permanecido desde entonces.
RAKK
Respuestas:
24
perl's rename(como se encuentra típicamente en Debian donde también se llama prename), o este derivado ( renamepaquete en Debian):
rename 's/\.tif$//' *.tif
util-linuxrename(como se encuentra típicamente en Red Hat, rename.ulen Debian):
rename -- .tif '' *.tif
(tenga en cuenta que se cambiaría el nombre blah.tiffany.tifa blahfany.tif)
Creo que el cambio de nombre de "Debian" es de Larry Wall (¿viene con Perl?) Y "Red Hat" es de util-linux (rename.ul en Debian IIRC).
XTL
@XTL: Verdadero. Simplemente los llamo así porque son los programas de "cambio de nombre" que se encuentran en los derivados de Debian o Red Hat.
Ignacio Vazquez-Abrams
¡Muchas gracias! Nunca me di cuenta de que había diferentes versiones de 'renombrar'. Supongo que hay otras diferencias sutiles entre los comandos en debian y redhat. Tendré que buscar algunas de sus diferencias.
Paul
El segundo comando resultó sintaxis no válida, pero el primero funcionó.
HelloWorld
6
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)
Eso supone que la implementación de util-linux renamees incompatible con (y mucho más limitada que) el renamecomando tradicional de perl.
Stéphane Chazelas
También tenga en cuenta que reemplaza la primera aparición .oldextdentro del nombre del archivo, no necesariamente la extensión ( foo.oldextasy.oldextsería renombrada como footasy.oldext).
Stéphane Chazelas
1
Si utiliza IBM AIX, no tendrá un renamecomando, por lo que para eliminar por lotes las extensiones de archivo tendrá que usar comandos UNIX de System V simples:
for file in *.tif; do
mv $file `echo $file | sed 's/.tif$//'`;
done;
Respuestas:
perl
'srename
(como se encuentra típicamente en Debian donde también se llamaprename
), o este derivado (rename
paquete en Debian):util-linux
rename
(como se encuentra típicamente en Red Hat,rename.ul
en Debian):(tenga en cuenta que se cambiaría el nombre
blah.tiffany.tif
ablahfany.tif
)fuente
Para un cambio de nombre, puede hacer:
(-i para advertir contra la sustitución de un archivo)
fuente
for i in ./*.tif; do mv -i "$i" "${i%.tif}"; done
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.
Con el comando anterior, todos los archivos con
.gz.tmp
extensión en la carpeta actual serán renombradosfilename.gz
.Consulte el artículo: Linux: elimine las extensiones de archivo para varios archivos para obtener más detalles.
fuente
rename
es incompatible con (y mucho más limitada que) elrename
comando tradicional deperl
..oldext
dentro del nombre del archivo, no necesariamente la extensión (foo.oldextasy.oldext
sería renombrada comofootasy.oldext
).Si utiliza IBM AIX, no tendrá un
rename
comando, por lo que para eliminar por lotes las extensiones de archivo tendrá que usar comandos UNIX de System V simples:fuente
podemos hacer esto recursivo
fuente