我希望根据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
答案 0 :(得分:2)
*
前面的反斜杠表示grep
被告知要扫描*.pdf
(一个星号作为第一个字符的单个文件名)。请记住,shell会进行元字符扩展;命令没有。
删除反斜杠,为grep
提供所有PDF文件的列表。
答案 1 :(得分:1)
grep -l "text1" \*.pdf |
除了搜索文字文本text1
的pdf之外,没有做任何事情。您忘记了$
将其变为变量:
grep -l "$text1" \*.pdf |
^---
答案 2 :(得分:0)
正如我在评论中提到的那样,尝试删除-d ''
参数以进行阅读。