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

スキャンするように指示された*手段の前の円記号(最初の文字にアスタリスクが付いた単一のファイル名)。シェルはメタ文字の拡張を行うことを忘れないでください。コマンドはしません。grep*.pdf

バックスラッシュを削除してgrep、すべてのPDFファイルのリストを表示します。

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

PDF でリテラル テキストを検索する以外は何もしていませんtext1$を変数にするのを忘れました:

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

コメントで述べたように、-d ''引数を削除して読んでみてください。

于 2012-10-30T22:07:41.340 に答える