Oi Cledson, tudo bem? 😊
Entendi sua dúvida sobre como adicionar um prefixo aos arquivos em um diretório específico usando o comando mv.
O problema no seu script é que você está concatenando o prefixo com o caminho completo do arquivo. 🤔
Isso faz com que o comando mv tente renomear o arquivo para um novo nome que inclui o caminho completo, o que não é o desejado.
Para corrigir isso, você precisa extrair apenas o nome do arquivo do caminho completo antes de adicionar o prefixo.
Você pode fazer isso usando o comando basename. 👍
Aqui está uma versão modificada do seu script que deve funcionar:
#!/bin/bash
read -p "Digite o diretório que precisa mudar o prefixo dos arquivos: " diretorio
if [ ! -d "$diretorio" ]; then
echo "Não encontramos o diretório: $diretorio"
exit 1
fi
prefixo="backup_"
for arquivo in "$diretorio"/*; do
nome_arquivo=$(basename "$arquivo")
mv "$arquivo" "$diretorio/$prefixo$nome_arquivo"
done
O que foi alterado:
if [ ! -d "$diretorio" ]:
Usei -d para verificar se o diretório existe. 📁
nome_arquivo=$(basename "$arquivo"):
Usei basename "$arquivo" para extrair apenas o nome do arquivo (sem o caminho do diretório).
mv "$arquivo" "$diretorio/$prefixo$nome_arquivo":
Adicionei o prefixo apenas ao nome do arquivo, precedido pelo caminho do diretório.
Isso garante que o arquivo renomeado permaneça no mesmo diretório.
Com essa modificação, o comando mv irá renomear corretamente os arquivos, adicionando o prefixo desejado. 😀
🎓 Para saber mais:

Caso este post o tenha ajudado,
marque-o como solucionado ☑️.Bons Estudos! 🤓