Como renomear vários arquivos removendo a extensão?

8

Eu tenho vários arquivos tiff chamados:

sw.001.tif
sw.002.tif
...

e eu quero remover o .tif no final de cada um dos arquivos. Como posso usar o comando rename para fazer isso?

    
por Paul 19.03.2012 / 23:58

5 respostas

20

perl rename (como normalmente é encontrado no Debian, onde também é chamado prename ), ou esta derivada ( rename package no Debian):

rename 's/\.tif$//' *.tif

util-linux rename (como normalmente encontrado na Red Hat, rename.ul no Debian):

rename -- .tif '' *.tif

(note que aquele iria mudar o nome de blah.tiffany.tif para blahfany.tif )

    
por 20.03.2012 / 00:05
5

Para uma não renomeação, você pode fazer:

$ for i in *.tif; do mv -i $i 'basename $i .tif'; done

(- i para avisar contra a substituição de um arquivo)

    
por 20.03.2012 / 08:44
1
rename -- .oldext .newext *.oldext

Isso substitui a extensão antiga pela nova. Para simplesmente remover a extensão, você pode explicitamente passar uma string vazia como argumento.

rename -- .gz.tmp  '' *.gz.tmp

Com o comando acima, todos os arquivos com extensão .gz.tmp na pasta atual serão renomeados para filename.gz .

Consulte o artigo: Linux: remova extensões de arquivos para vários arquivos para detalhes.

    
por 27.05.2015 / 09:52
1

Se você usar o IBM AIX, não terá um comando rename , portanto, para remover em lote as extensões de arquivo, será necessário usar os comandos do UNIX V simples do System V:

for file in *.tif; do
   mv $file 'echo $file | sed 's/.tif$//'';
done;
    
por 20.02.2015 / 20:00
-2

podemos tornar isso recursivo

for i in *.gz; do mv -i $i 'basename $i .gz'; done
    
por 20.09.2018 / 14:20

Tags