Aqui está uma solução que consegui trabalhar:
#!/bin/bash
shopt -s nullglob
my_files='/root/temp/files'
old_name='essay'
new_name='new_name'
for file in "${my_files}/${old_name}"*; do
my_extension="${file##*.}"
mv "$file" "${my_files}/${new_name}.${my_extension}"
done
-
shopt -s nullglob
Isso evitará um erro se o diretório que está analisando estiver vazio
-
for file in "${my_files}/${old_name}"*; do
Vamos fazer um loop por cada file
em /root/temp/files/
, desde que comece com essay
-
my_extension="${file##*.}"
Isso reduzirá tudo ao último .
encontrado no nome do arquivo (esperamos que você fique apenas com a extensão)
-
mv "$file" "${my_files}/${new_name}.${my_extension}"
Isso move o arquivo antigo para o novo nome de arquivo enquanto reserva a extensão. (renomear)