Usando a expansão do parâmetro bash
:
for i in ?????????????*; do echo mv -i "$i" "${i%????????????}"; done
remova echo
da ação real. Verifique o mesmo nome do arquivo de saída para vários arquivos de origem.
Você também pode usar o padrão de substituição de expansão de parâmetro:
for i in ?????????????*; do echo mv -i "$i" "${i/????????????}"; done
Usando rename
( prename
), desse diretório:
rename -n 's/.{12}$//' *
Isso renomeará todos os arquivos e diretórios, se você quiser fazer apenas por arquivos:
find . -maxdepth 1 -type f -name '?????????????*' -exec rename -n 's/.{12}$//' {} +
Isso executará a execução a seco, removerá -n
da ação real:
find . -maxdepth 1 -type f -name '?????????????*' -exec rename 's/.{12}$//' {} +
Novamente, isso pode resultar em uma condição de corrida, certifique-se de verificar cuidadosamente a saída da operação a seco.