Eu escrevi um pequeno script para fazer o trabalho.
#!/bin/bash
# Variables
extension='mobi'
report='report.log'
if [ -f $report ];
then
rm -rf $report
fi
echo $'renaming files . . .\n'
for filename in *.$extension
do
temp=$(echo $filename | tr '_' ' ' | tr '%20' ' ' | tr '[]' '()' | tr -s ' ' | sed 's/\.[^.]*$//' )
part1=$(echo $temp | cut -f1 -d-)
part2=$(echo $temp | cut -f2 -d-)
new_filename=$(echo "${part2#?} - ${part1%?}.$extension")
echo $(mv -v "$filename" "$new_filename") | tee -a $report
if [ $? -ne 0 ]; then
echo $'\n\nScript FAILED'
exit 1
fi
done
echo $'\n\nScript SUCCESSFUL'
exit 0
Crie um arquivo .bsh dentro do diretório em que seus arquivos .mobi estão armazenados e cole o código acima:
Abra um Terminal com Ctrl + Alt + T e navegue até o diretório em que seu script está armazenado:
cd /path/to/directory/
Para alterar as permissões do script:
chmod +x <filename>.bsh
Para executar o script:
bash <filename>.bsh
Se por algum motivo o mv
falhar, você receberá um erro 'Script FAILED'
, caso contrário, você obterá 'Script SUCCESSFUL'
.
Explicação
tr '_' ' '
substitui sublinhados por espaço em branco
tr '%20' ' '
replace %20
com espaço em branco
tr '[]' '()'
substitui colchetes por parênteses
tr -s ' '
substitui vários espaços por um
sed 's/\.[^.]*$//'
extrai apenas o nome do arquivo sem a extensão
${string#?}
remove o primeiro caractere de uma string
${string%?}
remove o último caractere de uma string
mv -v
isto mostrará no terminal quais arquivos estão sendo movidos. -v
significa verbose.
tee -a changelog.log
Por padrão, o comando tee
lê a entrada padrão e grava na saída e nos arquivos padrão. -a
significa acrescentar.
if [ $? -ne 0 ]
verifica se o comando anterior foi bem sucedido.
report.log
armazena o nome anterior e mais recente de cada arquivo.
Nota
O script assume que o nome do arquivo contém apenas um traço -