2012-01-30 10 views
0

ファイルには完全修飾パス名(例:/aaa/bbb/cc)が含まれています。 /bbb/ccのファイルのみを検索する必要があります。 /bbb/ccは、検索を実行するbashスクリプトの引数です。Linux Bash - 部分パス名のgrepファイル

私の問題は、引数で前方slashsです:

find . -name '*.txt' -print | xargs grep $1 /dev/null 

答えて

1

私はそれはあなたが何を意味するかだかどうかわからないんだけど、あなたは/bbb/ccに一致するようにgrepで使用する正規表現を探しているなら、しかしない/aaa/bbb/cc、あなたはこれを使用することができます:

0
find . -name \*.txt -exec grep `echo $1 | sed -E 's;^/[^/]+;;'` /dev/null \; 

sedの式はあなたから先頭のパスコンポーネントを取り除きます。私たちはそれにスラッシュを含むパターンを扱っているので、私は区切り文字としてセミコロンを任意に選択しました。スラッシュで始まり、スラッシュ以外の1つ以上の文字が続く各行(空白が1つ)に空白(;;)を代入することを意味します。

関連する問題