Подтвердить что ты не робот

Bash цикл foreach

У меня есть вход (скажем, файл). В каждой строке есть имя файла. Как я могу прочитать этот файл и отобразить содержимое для каждого из них.

4b9b3361

Ответ 1

Что-то вроде этого:

xargs cat <filenames.txt

Программа xargs считывает свой стандартный ввод, и для каждой строки ввода выполняется программа cat с входными строками в качестве аргумента (ов).

Если вы действительно хотите сделать это в цикле, вы можете:

for fn in `cat filenames.txt`; do
    echo "the next file is $fn"
    cat $fn
done

Ответ 3

Вот цикл while:

while read filename
do
    echo "Printing: $filename"
    cat "$filename"
done < filenames.txt

Ответ 4

xargs --arg-file inputfile cat

Это приведет к отображению имени файла, за которым следует содержимое файла:

xargs --arg-file inputfile -I % sh -c "echo %; cat %"

Ответ 5

Вы, вероятно, захотите обрабатывать пробелы в именах файлов, отвратительны, хотя они: -)

Итак, я бы выбрал сначала что-то вроде:

pax> cat qq.in
normalfile.txt
file with spaces.doc

pax> sed 's/ /\\ /g' qq.in | xargs -n 1 cat
<<contents of 'normalfile.txt'>>
<<contents of 'file with spaces.doc'>>

pax> _

Ответ 6

cat `cat filenames.txt`

выполнит трюк