在多个 PDF 上使用 pdfinfo 然后提取文件名和页数

在多个 PDF 上使用 pdfinfo 然后提取文件名和页数

我有包含数千个 PDF 的目录(和子目录),并试图将所有这些 PDF 的总页数汇总在一起。因此,我尝试运行以下命令:

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

我获得了传输到文件中的每个文件的页数filelist

我真的很想将文件名通过管道传输进去,但不知道如何做到这一点(pdfinfo返回大量有关 PDF 的数据,但不返回文件名本身)。

答案1

-exec前面加上-print。这样,在打印其输出find之前,路径名将由 打印出来。是默认操作(例如,当您运行 sole 时),但 的存在会抑制默认值。pdfinfo-printfind .-exec

如果您更喜欢在输出相应内容后显示路径名,pdfinfo那么您可以尝试-exec … -print,但请注意,在这种情况下,当且仅当(即)成功-print时才会执行。通常,人们使用来测试。就您的问题而言,我个人更喜欢先显示路径名,因此。-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目录等。

相关内容