Группируйте строки в файле и передавайте группу программе за раз

Похоже, что лучший способ справиться с этим — использовать direct file вывод. Таким образом показания du будут намного точнее.

К сожалению, это позволяет только dd, поэтому нам необходимо решить две проблемы:

  1. dd не знает, что делать с каталогами
  2. dd может копировать только один файл за раз

Сначала давайте определим входные и выходные каталоги:

SOURCE="/media/source-dir"
TARGET="/media/target-dir"

Теперь давайте cd в исходный каталог, чтобы find сообщал об относительных каталогах, которыми мы можем легко манипулировать:

cd "$SOURCE"

Дублировать дерево каталогов из $SOURCE в $TARGET

find . -type d -exec mkdir -p "$TARGET{}" \;

Дублировать файлы из $SOURCE в $TARGET без кэша записи (но с использованием чтения cache!)

find . -type f -exec dd if={} of="$TARGET{}" bs=8M oflag=direct \;

Это не сохранит время изменения файла, владельца и другие атрибуты, но для меня это нормально.

0
21.10.2016, 20:10
2 ответа
gawk        '{ f=f " " $0} 
    NR%15==0 { print("wrhtml2pdf " f " " NR/15 ".pdf") ; f=""}' urls

и, если вам нравится вывод, замените print на system

2
28.01.2020, 02:15

С xargs :

xargs -a urlsfile -n 15 bash -c 'wkhtmltopdf "$ @" my _ $$. pdf '

или если ваш xargs не поддерживает -a :

cat urlsfile | xargs -n 15 bash -c 'wkhtmltopdf "$ @" my _ $$. pdf'

4
28.01.2020, 02:15

Теги

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