2013-01-02 10 views
6

とディレクトリ内のすべてのファイル内の文字列のために、私はこのような構造を持つディレクトリ内のCSVファイルを持っているのgrep:特定の名前

20090120/ 
20090121/ 
20090122/ 
etc... 

を、私はこれらのディレクトリ内のCSVファイルのすべてで、特定の文字列をgrepしたいのですが、 2009年1月のみ200901 */*。csv

これを行うためのbashコマンドライン引数はありますか?

答えて

11

はい。 grep "a certain string" 200901*/*.csv

5

次のようなものが必要です:(検索文字列がコースのNEEDLEであると仮定すると - ちょうどあなたがが実際に探しているものは何でもそれを変更)

grep NEEDLE 200901*/*.csv 

を。

bashシェルは、多レベルのパスとファイル名を拡張することができます。

もちろん、1つのディレクトリがダウンしたCSVファイルのみに限定されます。サブツリー全体を検索する場合は、少し複雑な(適応可能な)findコマンドを使用する必要があります。

けれども、あなたは深さに制限を設定することができますと仮定して、あなたは離れて(3用のレベル)のようなもので得ることができる:

grep NEEDLE 200901*/*.csv 200901*/*/*.csv 200901*/*/*/*.csv 
+0

また、[globstarを設定して**](http://wiki.bash-hackers.org/internals/shell_options#globstar) –

4

これを試してみてください:

grep -lr "Pattern" 200901*/*.csv 
0

お試しください。 と特定のファイル名パターンを検索し、grepパターンを検索する:

find . -name "*.csv" -print -exec grep -n "NEEDLE" {} \; | grep -B1 "NEEDLE" 
関連する問題