2017-01-05 6 views
0

2つのfindコマンドを組み合わせて、grepパターンの一致にパイプします。findコマンドの条件を組み合わせる

私の3コマンドは次のとおりで

find -type d \(-path /dir -o -path /dir2 -o -path /dir3 \) -prune -o -print 

検索パターン:

find '/logs' -mtime 0 -type f 

ディレクトリのカップルを無視:

は、過去24時間に変更されたファイルを取得しますファイルの行:

grep -rnw -e "my pattern" 

私は下になりましたが、ミントにスキップするディレクトリを追加することはできません。

は、過去24時間に変更されたファイルを取得し、ファイルの行でパターンを見つける:

find '/logs' -mtime 0 -type f | xargs grep -rnwI -e "my pattern" 

を理想的には、私は過去24時間に変更されたファイルを取得し、ディレクトリを無視して結合したいと思います。

+0

「/ logs」を検索してみてください。-mtime 0 -type f | grep -v DIRTOEXCLUDE | xreps grep -rnwI -e "私のパターン" –

答えて

1
find '/logs' ! -path "*/dir1/*" ! -path "*/dir2/*" ! -path "*/dir3/* -mtime 0 -type f | xargs grep -rnwI -e "my pattern" 

または

find '/logs' -mtime 0 -type f | egrep -v "dir1|dir2|dir3" | xargs grep -rnwI -e "my pattern" 
+0

私はegrepがちょっときれいで好きです。 – BluGeni

+0

egrepの使用はPOSIXでは廃止され、 'grep -E'は' man grep'から使用されます。さらに、3つの変種プログラムegrep、fgrep、 rgrepが利用可能です。 egrepはgrep -Eと同じです。 fgrepはgrep -Fと同じです。 rgrepはgrep -rと同じです。 egrepやfgrepのような直接呼び出しは、 に依存しない履歴アプリケーションを許可するために提供されています。 – Cwissy

1

多分これが遅いソリューションは、あなたの問題を解決することができます:

find '/logs' -mtime 0 -type f | grep -v dir | grep -v dir2 | grep -v dir3| xargs grep -rnwI -e "my pattern" 
1

多分全然見つから使用ではなく、--exclude-dirのと一緒のgrepの再帰的な能力オプション(または、--exclude-fromオプションについては、man grepを参照してください)。

grep -r --exclude-dir=dir1 --exclude-dir=dir2 --exclude-dir=dir3 -nwI -e "my pattern" /logs* 
+0

hmm私はこのアプローチについて考えていませんでした。 – BluGeni

関連する問題