Use apenas read para ler uma linha de STDIN, assim.
for FILE in *; do
echo "Rename '$FILE' to:"
read NAME
mv "$FILE" "$NAME"
done
Este exemplo exige que você pressione Ctrl-C para abortar quando terminar, mas você pode adicionar um caso if extra para abortar. se nenhum nome foi inserido.
EDITAR: Se você quiser que todos os seus arquivos de destino tenham a mesma extensão de arquivo do arquivo original (por exemplo, se o arquivo foi chamado pogo.jpg , você deseja que o arquivo renomeado mantenha o arquivo .jpg ending, e não precisa digitar isso manualmente) você pode alterar o comando mv no loop acima para:
mv "$FILE" "$NAME.${FILE##*.}"
O material ${FILE##*.} na string acima significa:
-
${FILE...}exibe a variável$FILE, mas… -
##remove a cadeia de correspondência mais longa desde o início (apenas um#corresponde ao menor) -
*corresponde zero ou mais de qualquer caractere -
.corresponde a um período literal
Somente se a expressão inteira ( *. ) corresponder a ela será removida, assim, se não houver um período no nome do arquivo original, você obterá um resultado estranho e o novo nome do arquivo será NEWNAME.OLDNAME . / p>