Как считать линию за линией несколько файлов

скажем, у меня есть неопределенное количество файлов

в /mnt/traitement и я хочу считать линию за линией каждый файл в этой папке, как я делаю это, я знаю, что для чтения файлов линию за линией необходимо сделать этот код

while read line
do
   #stuff
done < file

но я не знаю, как быть нацеленным на несколько файлов.

3
задан 27 May 2018 в 20:22

1 ответ

Этого должно быть достаточно, чтобы заключить цикл while в цикл for:

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

Если вы заботитесь только о самом тексте, вы можете просто cat file1 file2 file3 | while IFS= read -r line, но остерегайтесь файлов, не заканчивающихся символом новой строки. , так как cat склеит последний элемент этого файла с первой строкой нового.

Кроме того, поскольку вы упомянули конкретный каталог, вы можете использовать glob с циклом for, как в for i in /mnt/traitement/*. Вот так

for i in  /mnt/traitement/*   ; do
    if ! [ -f "$i" ]; then
        continue
    fi
    while IFS= read -r line
    do
         #stuff
    done < "$i"
 done
6
ответ дан 1 December 2019 в 15:21

Другие вопросы по тегам:

Похожие вопросы: