Используйте pdfinfo для нескольких PDF-файлов, затем извлеките имя файла и количество страниц.

Используйте pdfinfo для нескольких PDF-файлов, затем извлеките имя файла и количество страниц.

У меня есть каталоги (и подкаталоги) с несколькими тысячами PDF-файлов, и я пытаюсь получить общее количество страниц во всех этих PDF-файлах. Поэтому я пробую запустить эту команду:

find . -name \*.pdf -exec pdfinfo {} \; | grep Pages > filelist

И я получаю количество страниц для каждого файла, переданного в filelistфайл.

Мне бы очень хотелось также передать имя файла, но не могу понять, как это сделать ( pdfinfoвозвращает много данных о PDF-файле, но не само имя файла).

решение1

Предварительно добавьте -exec. -printТаким образом, имя пути будет напечатано до findтого, как соответствующий pdfinfoвыведет свой вывод. -print— это действие по умолчанию (например, когда вы запускаете sole find .), но наличие -execподавляет действие по умолчанию.

Если вы предпочитаете путь после вывода соответствующего, pdfinfoто вы можете попробовать -exec … -print, но обратите внимание, что в этом случае -printбудет выполнено iff -exec(ie pdfinfo) успешно. В общем случае используется iff, -exec … -printкогда -execиспользуется в качестве теста. В контексте вашего вопроса я лично предпочитаю путь первым, поэтому -print -exec ….

Затем вам нужно настроить ваш grep. Используйте тот факт, что каждое рассматриваемое имя пути find .должно начинаться с .. grep -E '^(\.|Pages)'соответствует строкам с точкой в ​​начале или со строкой Pagesв ​​начале.

Последняя команда будет такой:

find . -name \*.pdf -print -exec pdfinfo {} \; | grep -E '^(\.|Pages)'

(перенаправьте вывод самостоятельно).

Рассмотрите -type fв качестве первого теста в случае возникновения нестандартныхфайлсовпадения -name \*.pdfслучайные. Это позволит избежать вызова pdfinfoкаталогов и т.п.

Связанный контент