在多個 PDF 上使用 pdfinfo,然後提取檔案名稱和頁數

在多個 PDF 上使用 pdfinfo,然後提取檔案名稱和頁數

我有包含數千個 PDF 的目錄(和子目錄),並且試圖將所有這些 PDF 中的總頁數匯總在一起。所以我嘗試運行這個命令:

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

我得到了透過管道傳輸到文件中的每個文件的頁數filelist

我真的很想透過管道輸入文件名,但不知道如何做到這一點(pdfinfo返回大量有關 PDF 的數據,但不返回文件名本身)。

答案1

前面-exec加上-print.這樣,路徑名將find在相應的pdfinfo列印輸出之前被列印。-print是預設操作(例如,當您執行 single 時find .),但 的存在-exec會抑制預設操作。

如果您喜歡各自輸出後的路徑名,pdfinfo那麼您可以嘗試-exec … -print,但請注意,在這種情況下,當且僅當(即)成功-print時才會執行。一般來說,使用when作為測試。在您的問題中,我個人更喜歡首先使用路徑名,因此.-execpdfinfo-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目錄等。

相關內容