所以我想使用 grep 列出与搜索字符串“Type 1C”匹配的 pdf 文件名。
grep
应该从中获取数据pdffonts
,但是当我执行此语法时,它只是pdffonts
正常执行。
find . -type f -iname "*.pdf" -print0 -exec pdffonts {} \; |xargs -0 grep -c -l "Type 1C"
当我获得帮助文件-
后添加时,这一定意味着它不支持这个参数。{}
pdffonts
但是我怎样才能通过管道传输pdffonts
呢grep
?
答案1
输出流中包含“-----------------------”并且它被解释为命令开关,这会弄乱一切。因此,在继续管道之前,请使用 tr 删除这些讨厌的破折号。
查找 . -type f -iname "*.pdf" -print0 -exec pdffonts {} \; | tr -d '-' | xargs -0 | grep 'Type 1' HelveticaNeueLight Type 1 是 否 否 18 0 HelveticaNeueRoman Type 1 是 否 否 22 0 HelveticaNeueMedium Type 1 是 否 否 26 0 HelveticaNeueLight Type 1 是 否 否 18 0 HelveticaNeueRoman Type 1 是 否 否 22 0 HelveticaNeueMedium Type 1 是 否 否 26 0 HelveticaNeueLight Type 1 是 否 否 18 0 HelveticaNeueRoman Type 1 是 否 否 22 0 HelveticaNeueMedium Type 1 是 否 否 26 0 HelveticaNeueLight Type 1 是 否 否 18 0 HelveticaNeueRoman Type 1 是 否 否 22 0 HelveticaNeueMedium Type 1 是 否 否 26 0
您不能使用“grep -l”,因为不再有文件的概念,输出的只是文本流。如果您想将文件列表作为索引保存,那么您很可能会使用 for 循环。