скажем, у меня есть неопределенное количество файлов
в /mnt/traitement
и я хочу считать линию за линией каждый файл в этой папке, как я делаю это, я знаю, что для чтения файлов линию за линией необходимо сделать этот код
while read line
do
#stuff
done < file
но я не знаю, как быть нацеленным на несколько файлов.
Этого должно быть достаточно, чтобы заключить цикл 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