
Preciso renomear os arquivos abaixo. Eu só quero remover .job-209675
os nomes de arquivos que começam, SOA
mas manter os nomes de arquivos originais intactos, pois há outros arquivos neste diretório
por exemplo
Antes: ./SOA_990377897NW0001_1557340549734.xml.job-2074645
Depois:./SOA_990377897NW0001_1557340549734.xml
Responder1
Se uma variável, filename
, contiver o nome de um dos seus arquivos, então ${filename%.job-*}
seria o nome sem o bit após o último ponto.
Para percorrer os nomes dos arquivos, renomeando cada um deles,
for filename in SOA_*.job-*; do
echo mv -i "$filename" "${filename%.job-*}"
done
O echo
está lá para proteção. Você deve executar o loop uma vez e inspecionar a saída e, em seguida, remover echo
se achar que está correto. A -i
opção mv
faz com que ele peça confirmação antes de substituir um arquivo existente.
Isso pressupõe que todos os arquivos relevantes (e nada mais) correspondam ao SOA_*.job-*
padrão.