Renomeando em massa sem precisar instalar comandos adicionais
Essa é uma dica simples de como renomear em massa no Linux. Estou ciente do comando "rename", mas para quem não quer instalar nada é possível usar algumas linhas em bash.
Vamos usar esse simples código como exemplo:
#!/bin/bash
for F in `ls $(pwd) | egrep -w '(tbz|tlz|txz)'`; do
mv "$F" "${F%t?z}tgz" 2> /dev/null
done
Vamos explicar o que ele vai fazer. Ele vai listar todos os arquivos do diretório atual que tenham as extensões ".tbz", ".tlz" e ".txz", e vai trocar as extensões para ".tgz". Funciona.
Mas, não precisa ficar criando scripts para isso, um exemplo no próprio terminal:
for F in *; do mv "$F" "${F%.sh} "; done
Nesse outro exemplo, foi usado um comando para tirar a extensão de todos os scripts em shell.
[1] Comentário enviado por msoliver em 14/09/2020 - 18:14h
Boa tarde Mauricio, seguem algumas dicas: (para melhorar a sua dica)
"Otimize" o comando:
Altere:
`ls $(pwd) | egrep -w '(tbz|tlz|txz)'`
Por:
${PWD}/*{tbz,tlz,txz}
Obs: Além de desnecessário, o "egrep" esta obsoleto"
=> man egrep|sed -n '/^ \+In addition/,+1p'
E:
mv ./"$F" "${F%t?z}tgz" 2> $NL #Acusa erro, devido ao './', $NL ???
Por:
mv ${F} "${F/.*/.tgz}" 2> /dev/null
for F in ${PWD}/*{tbz,tlz,txz}; do
mv ./"$F" "${F%t?z}tgz" 2> /dev/null
done
______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________