找不到bash grep文件

时间:2012-10-29 03:36:30

标签: bash grep

我希望根据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

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

grep -l "text1" \*.pdf |
除了搜索文字文本text1的pdf之外,

没有做任何事情。您忘记了$将其变为变量:

grep -l "$text1" \*.pdf |
         ^---

答案 2 :(得分:0)

正如我在评论中提到的那样,尝试删除-d ''参数以进行阅读。