Truncar todos os arquivos em um diretório após sublinhado?

0

Eu tenho um diretório com algumas milhares de imagens nele. A maioria deles tem nomes de arquivos sensíveis como SD-000.tif SD-001.tif BX-000.tif etc ...

No entanto, provavelmente ~ 25% deles têm nomes como BX-003_old.tif BX-004_veryold.tif

Como posso renomear os arquivos problemáticos removendo o _word do final de cada um?

Os arquivos são armazenados em um servidor FreeBSD, mas o diretório é compartilhado via samba.

Eu tentei usar combinações de sed e awk, mas não estou tendo sorte em fazer com que funcionem apenas no meio dos arquivos.

Alguém tem alguma ideia?

    
por torcod 10.08.2011 / 23:17

2 respostas

1

newname=${filename%_*}.${filename##*.}

${filename%_*} dá a parte antes do último sublinhado.
${filename##*.} te dá a parte depois do último ponto (a extensão).

    
por 11.08.2011 / 00:00
0

Caso alguém acabe tendo um problema semelhante no futuro, acabei consertando isso com o comando cut. Eu corri:

for i in *
do
mv $i 'echo $i|cut -d"_" -f1'
done

O loop simplesmente seleciona todos os arquivos no diretório atual e o cut -d especifica para truncar tudo após o caractere especificado. No meu caso o _.

    
por 11.08.2011 / 21:48