1
resposta

[Dúvida] Pequeno script modificado

Durante as atividades tentei fazer uma adição de prefixo em todos os arquivos de um diretório escolhido por mim. Contudo, ao tentar adicionar o prefixo usando o comando "mv" o caminho completo do arquivo impede que consiga alterar o arquivo inserido no diretório informado. Qual seria a melhor solução?

#!/bin/bash

read -p  "Digite o diretório que precisa mudar o prefixo dos arquivos: " diretorio

if [! "$diretorio"]; then
        echo "Não encontramos o diretorio: $diretorio"
        exit 1
fi


prefixo ="backup_"

for arquivo in "$diretorio"/*; do
        mv "$arquivo" "$prefixo$arquivo"
done
1 resposta

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:

  1. if [ ! -d "$diretorio" ]: Usei -d para verificar se o diretório existe. 📁

  2. nome_arquivo=$(basename "$arquivo"): Usei basename "$arquivo" para extrair apenas o nome do arquivo (sem o caminho do diretório).

  3. 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:

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