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! 🤓