Lembre-se de que nenhum sistema de arquivos linux ou unix usa "extensões" no estilo Windows ou VMS - é apenas por convenção que um sufixo do nome do arquivo é ".tif" ou ".c" ou ".o" ou ".so " como queiras.
22612 Bruce Ediger
Isso é bom ... Eu estou a importação de arquivos de Windows para Linux :)
Paul
1
Tecnicamente, o Windows também não usa extensões de arquivo, mas o gerenciador de arquivos do Windows 95 continuou usando os últimos caracteres do nome do arquivo para determinar o tipo de arquivo após interromper o esquema de nomeação do MS-DOS e a convenção permaneceu desde então.
RAKK 20/02
Respostas:
23
perl's rename(como normalmente encontrado no Debian, onde também é chamado prename), ou este derivado ( renamepacote no Debian):
rename 's/\.tif$//' *.tif
util-linuxrename(como normalmente encontrado no Red Hat, rename.ulno Debian):
rename -- .tif '' *.tif
(observe que esse seria renomeado blah.tiffany.tifpara blahfany.tif)
Eu acredito que o renomeado "Debian" é de Larry Wall (vem com Perl?) E o "Red Hat" é do util-linux (rename.ul no Debian IIRC).
XTL
@XTL: Verdadeiro. Eu os chamo assim porque são os programas de "renomeação" encontrados nos derivados Debian ou Red Hat.
Ignacio Vazquez-Abrams
Muito obrigado! Eu nunca percebi que havia versões diferentes de 'renomear'. Eu assumo que existem outras diferenças sutis entre os comandos no debian & redhat. Vou ter que procurar algumas de suas diferenças.
Paul
6
Para uma não renomeação, você pode fazer:
$ for i in *.tif; do mv -i $i `basename $i .tif`; done
(-i para advertir contra a substituição de um arquivo)
Isso pressupõe que a implementação util-linux renameseja incompatível com (e muito mais limitada que) o renamecomando tradicional do perl.
Stéphane Chazelas
Observe também que ele substitui a primeira ocorrência de .oldextdentro do nome do arquivo, não necessariamente a extensão ( foo.oldextasy.oldextseria renomeada para footasy.oldext).
Stéphane Chazelas
1
Se você usar o IBM AIX, não terá um renamecomando; portanto, para remover extensões de arquivo em lote, será necessário usar comandos simples do System V UNIX da baunilha:
for file in *.tif; do
mv $file `echo $file | sed 's/.tif$//'`;
done;
Respostas:
perl
'srename
(como normalmente encontrado no Debian, onde também é chamadoprename
), ou este derivado (rename
pacote no Debian):util-linux
rename
(como normalmente encontrado no Red Hat,rename.ul
no Debian):(observe que esse seria renomeado
blah.tiffany.tif
parablahfany.tif
)fonte
Para uma não renomeação, você pode fazer:
(-i para advertir contra a substituição de um arquivo)
fonte
for i in ./*.tif; do mv -i "$i" "${i%.tif}"; done
Isso substitui a extensão antiga pela nova. Para simplesmente remover a extensão, você pode transmitir explicitamente uma string vazia como argumento.
Com o comando acima, todos os arquivos com
.gz.tmp
extensão na pasta atual serão renomeados parafilename.gz
.Consulte o artigo: Linux: remova extensões de arquivos para vários arquivos para obter detalhes.
fonte
rename
seja incompatível com (e muito mais limitada que) orename
comando tradicional doperl
..oldext
dentro do nome do arquivo, não necessariamente a extensão (foo.oldextasy.oldext
seria renomeada parafootasy.oldext
).Se você usar o IBM AIX, não terá um
rename
comando; portanto, para remover extensões de arquivo em lote, será necessário usar comandos simples do System V UNIX da baunilha:fonte
podemos fazer isso recursivo
fonte