Maneira apropriada de fazer um loop no diretório, agindo apenas em arquivos .pcap

0

É legal no bash executar um loop aninhado em um diretório de arquivos que correspondem apenas a arquivos .pcap?

ROOTFILEPATH = '/a/path'
FILEEXT = '.pcap'
for file in $ROOTFILEPATH
for $FILEEXT in file; do
    #do something
done

Obrigado.

    
por john jones 12.10.2017 / 17:06

2 respostas

3

Não há necessidade de aninhar o loop, você pode dizer ao seu primeiro loop que apenas atue nos arquivos *.pcap .

#! /bin/bash -

for CUR_FILE in "/PATH/TO/DIR/"*.pcap; do
    echo "$CUR_FILE"
done
    
por 12.10.2017 / 17:11
2

Para percorrer um diretório, selecionando apenas as extensões, onde tanto o diretório quanto a extensão são variáveis:

rootfilepath='/a/path'
fileext='.pcap'
for file in "$rootfilepath"/*"$fileext"
do
  : something with "$file"
done

Eu fiz várias alterações no seu original:

  • com letras minúsculas nos nomes das variáveis. Apenas uma convenção; ajuda a evitar várias variáveis embutidas com todos os nomes de letras maiúsculas.
  • removeu os espaços em torno da atribuição de variáveis; caso contrário, o próprio nome da variável é considerado um comando para executar com dois parâmetros: um sinal de igual e o valor da variável restante.
  • adicionou um do ausente ao loop
  • usou a globalização de shell ( * ) entre o diretório e a extensão do arquivo para pegar todos os arquivos nesse caminho com essa extensão
por 12.10.2017 / 18:12

Tags