1

我希望根据我所做的 grep 搜索应用一些命令,grep -l "If you wish to distribute" *.pdf并且我看到了我想要处理的文件,但是使用以下 bash 脚本,这些文件没有被处理:

#!/bin/bash -x
text1="If you wish to distribute"  #Science papers

# Originally: grep -l "text1" \*.pdf |

grep -l "$text1" *.pdf |
while IFS="" read -r -d "" file; do
  noext="${file%\.*}"
  pdftk "$file" cat 2-end output "$noext".tmp 
  mv -f "$noext".tmp "$file"
done

输出是

+ IFS=
+ grep -l 'If you wish to distribute' project_latex.pdf 'Science 2003 Metapopulation Persistence with Age-Dependent Disturbance or Succession.pdf' 'Science 2006 A Keystone Mutualism Drives Pattern in a Power Function.pdf' short-math-guide.pdf Test.pdf
+ read -r -d '' file
4

3 回答 3

3

被告知扫描的*方法前面的反斜杠(带有星号作为第一个字符的单个文件名)。请记住,shell 会进行元字符扩展;命令没有。grep*.pdf

删除反斜杠以提供grep所有 PDF 文件的列表。

于 2012-10-29T04:03:43.887 回答
2
grep -l "text1" \*.pdf |

除了在 pdf 中搜索文字 text 之外,没有做任何事情text1。你忘了$把它变成一个变量:

grep -l "$text1" \*.pdf |
         ^---
于 2012-10-29T03:39:23.947 回答
1

正如我在评论中提到的,尝试放弃-d ''阅读的论点。

于 2012-10-30T22:07:41.340 回答