cat $(grep '^include' file.txt | cut -d" " -f2); grep -v '^include' file.txt
Первая команда grep
строку, начинающуюся с include
в file.txt
, cut
часть имени файла и затем cat
его.
Следующая команда выведет все строки, кроме строки, начинающейся с include
в file.txt
Грубо,
#!/bin/sh
set -- *.md
while [ $# -gt 0 ]
do
pandoc "${1} -f markdown ${1%.md}.pdf" &
shift
if [ $# -gt 0 ]
then
pandoc "${1} -f markdown ${1%.md}.pdf" &
shift
fi
wait
done
С xargs:
find. -type f -name '*.md' -print0 | xargs -0 -n2 -P2 -I{} pandoc {} -f markdown {}.pdf
вам придется переименовать их впоследствии, так как приведенное выше приведет к файлам с именами a.md.pdf, b.md.pdf и т. д. Обратите внимание, что в целях безопасности с именами файлов мы просим find
распечатать нулевые -разделенные имена файлов и запрос xargs
на чтение в нулевом -разделенном вводе. Переименуйте файлы с помощью:
for f in./*.md.pdf; do mv -- "${f}" "${f%.md.pdf}.pdf"; done
Это может сработать:
parallel pandoc {} -f markdown {.}.pdf ::: *.md
Если вы не хотите запускать одно задание для каждого потока ЦП, а хотите принудительно выполнить 2 задания параллельно:
parallel -j2 pandoc {} -f markdown {.}.pdf ::: *.md
Вы можете потратить 15 минут на чтение глав 1+2 книги GNU Parallel:http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html(Печатная ),https://doi.org/10.5281/zenodo.1146014(Интернет ).