usando expansão de contraventamento para alterar nomes de arquivos, não extensões?

5

Eu tenho um diretório contendo um monte de arquivos com diferentes extensões, mas o nome do arquivo antes da extensão é o mesmo. Por exemplo, file1.txt, file1.jpg, file1.pdf, file1.odt ...

Eu quero alterar a parte 'file1', mas não a extensão, então o resultado seria, por exemplo, newfilename.txt, newfilename.jpg, newfilename.pdf, newfilename.odt

Eu não consigo descobrir como fazer isso sem tediosamente executar mv file1.txt newfilename.txt em cada um. Eu posso encontrar muitos tuturials on-line para alterar os nomes de arquivos com expansão de cinta se você souber todas as partes para expandir, mas nada apenas substituir file1 com newfilename, não importa qual a extensão. Isso é possível, ou estou latindo na árvore errada?

Obrigado

EDIT: desculpe, não momentos depois de postar isso eu encontrei uma página diferente nos meus resultados do Google que respondeu a pergunta para mim: for f in file1.*; do mv "$f" "${f/file1/newfilename}"; done funciona perfeitamente.

    
por Wolf 29.01.2011 / 21:40

2 respostas

4

Encontrei isso logo depois de postar a pergunta:

for f in file1.*; do mv "$f" "${f/file1/newfilename}"; done

Funciona como um encanto.

    
por 29.01.2011 / 23:59
2

Você pode fazer isso com o bash, mas existem outras ferramentas mais adequadas para o trabalho.

Na maioria das distros:

rename file1 newfilename file1.*

No Debian e no Ubuntu, substitua rename por rename.ul .

    
por 31.01.2011 / 06:03

Tags