Como ler linha por linha em vários arquivos

3

digamos que eu tenha um número de arquivos em segundo plano

em /mnt/traitement e eu quero ler linha por linha todos os arquivos nesta pasta como eu faço isso, eu sei que para ler arquivos linha por linha você precisa fazer este código

while read line
do
   #stuff
done < file

mas não sei como segmentar vários arquivos.

    
por PostMaloneM3m3r 27.05.2018 / 18:42

1 resposta

6

Deve ser suficiente para envolver o loop while em um loop for:

for i in file1 file2 file3; do
    while IFS= read -r line
    do
         #stuff
    done < "$i"
 done

Se você se importar apenas com o texto em si, poderá apenas cat file1 file2 file3 | while IFS= read -r line , mas cuidado com arquivos terminados que não sejam de nova linha, pois cat combinará o último item desse arquivo com a primeira linha de um novo.

Além disso, desde que você mencionou um diretório específico, você pode usar glob com o loop for como em for i in /mnt/traitement/* . Assim

for i in  /mnt/traitement/*   ; do
    if ! [ -f "$i" ]; then
        continue
    fi
    while IFS= read -r line
    do
         #stuff
    done < "$i"
 done
    
por Sergiy Kolodyazhnyy 27.05.2018 / 18:57