Se rename
estiver disponível, use este comando:
rename 's/a_LT/LT_A/' *
Outra abordagem com awk
:
find -type f | awk -F'a_LT' '{printf "mv \"%s\" \"%sLT_A%s\"\n", $0, $1, $2}' | bash
Pegue um número de arquivos chamados:
data_a_LT.fits
data_a_LT.coo
data_a_LT.ec
data_a_LT.grp
Eu quero substituir todos os "a_LT" por "LT_A" de tal forma que eu tenha:
data_LT_A.fits
data_LT_A.coo
data_LT_A.ec
data_LT_A.grp
Como se faz isso com um comando? Algo como:
mv *a_LT* *LT_A*
Se rename
estiver disponível, use este comando:
rename 's/a_LT/LT_A/' *
Outra abordagem com awk
:
find -type f | awk -F'a_LT' '{printf "mv \"%s\" \"%sLT_A%s\"\n", $0, $1, $2}' | bash
Usando o bash:
for file in *; do [[ -f "$file" ]] && mv "$file" "${file/a_LT/LT_A}"; done
data_LT_A.coo
data_LT_A.ec
data_LT_A.fits
data_LT_A.grp
Estou acostumado a usar xargs:
ls -1 | sed 's/\(\(.*\)a_LT\(.*\)\)/ LT_A/' | xargs -n 2 mv
renomear pode não funcionar como esperado em sistemas baseados em CentOS. Nesse caso, você pode baixar este script e copie-o em sua máquina como $ HOME / bin / rename.pl.
rename.pl 's/a_LT/LT_A/g' * -vn
funcionará como esperado agora.
É melhor correr
rename.pl -n 's/a_LT/LT_A/g' *
antes de executar o primeiro comando, pois isso exibirá o resultado, sem realmente alterar os nomes.
Eu fui para o seguinte que funcionou um tratamento.
rename 's/a_LT/LT_A/g' *
Um forro, conciso e fácil de lembrar.