Pergunta básica sobre como ler arquivos em um diretório

0

Esta é uma pergunta para iniciantes: Eu estou tentando escrever um arquivo .sh para renomear automaticamente os arquivos em um diretório.

O arquivo seria parecido com

for fileName in directory
do
    mv fileName "NewPrefix"+fileName
done

Estou tentando descobrir como escrever o for fileName in directory part.

Eu tentei o seguinte:

dir = '.'
for fileName in dir

Isso está funcionando, mas sempre que executo esse script, recebo dir: cannot access =: No such file or directory.

Por quê?

    
por teaLeef 28.12.2013 / 03:24

1 resposta

1

Existem vários problemas com o seu código:

  • As variáveis de bash são usadas com $VAR , observe o $ na frente. Se você omitir o cifrão, ele será tratado como uma string normal.
  • A globalização de nome de arquivo do Bash precisa de um curinga ( * , ? , etc.). Seu exemplo de . corresponderia à pasta . , que é a pasta atual.
  • As variáveis são definidas com VAR=VALUE . Não há espaço ao redor do sinal de igual. VALUE deve ser citado se tiver espaços.
  • A concatenação de strings ocorre automaticamente. O sinal + insere um literal + nessa posição.
  • As variáveis sempre devem ser usadas entre aspas duplas, a menos que você tenha um motivo para não fazê-lo.

Com esses pontos em mente, aqui está uma versão funcional do seu script.

cd /path/to/folder

for file in ./*
do
    mv "$file" "NewPrefix$file"
done

Se condições

Se as condições forem usadas da seguinte forma:

if [[ "$file" == "New"* ]]
then
    # Do something here
fi

Note que o asterisco está fora das aspas duplas.

    
por kiri 28.12.2013 / 03:29