У меня есть вход (скажем, файл). На каждой строке есть имя файла. Как я могу прочитать этот файл и отобразить содержимое для каждого.
158
Что-то вроде этого сделало бы:
xargs cat <filenames.txt
xargs
Программа считывает стандартный ввод, и для каждой линии ввода запускает cat
программу с входными линиями в качестве аргумента (ов).
Если вы действительно хотите сделать это в цикле, вы можете:
for fn in `cat filenames.txt`; do
echo "the next file is $fn"
cat $fn
done
«foreach» - это не название для bash. Это просто "для". Вы можете делать вещи в одну строку только как:
Ссылка: http://www.cyberciti.biz/faq/linux-unix-bash-for-loop-one-line-command/
источник
Вот
while
цикл:источник
read
Это выведет имя файла, за которым следует содержимое файла:
источник
Возможно, вы захотите обрабатывать пробелы в именах файлов, хотя они и отвратительны :-)
Поэтому я бы изначально выбрал что-то вроде:
источник
сделает свое дело
источник
Если они имеют одинаковое расширение (например, .jpg), вы можете использовать это:
(Это решение также работает, если в имени файла есть пробелы)
источник