我有包含数千个 PDF 的目录(和子目录),并试图将所有这些 PDF 的总页数汇总在一起。因此,我尝试运行以下命令:
find . -name \*.pdf -exec pdfinfo {} \; | grep Pages > filelist
我获得了传输到文件中的每个文件的页数filelist
。
我真的很想将文件名通过管道传输进去,但不知道如何做到这一点(pdfinfo
返回大量有关 PDF 的数据,但不返回文件名本身)。
答案1
-exec
前面加上-print
。这样,在打印其输出find
之前,路径名将由 打印出来。是默认操作(例如,当您运行 sole 时),但 的存在会抑制默认值。pdfinfo
-print
find .
-exec
如果您更喜欢在输出相应内容后显示路径名,pdfinfo
那么您可以尝试-exec … -print
,但请注意,在这种情况下,当且仅当(即)成功-print
时才会执行。通常,人们使用来测试。就您的问题而言,我个人更喜欢先显示路径名,因此。-exec
pdfinfo
-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
目录等。