ackとgrepで最大深度検索を行う方法


32

ack現在のフォルダーのテキストのみを検索するように指示する方法はありますか?(またはmax-depthレベルを指定しますか?)そしてgrep


1
いいえ、ackにはmax-depthオプションがありません。ただし、-nまったく再帰しないということです。
アンディレスター14

回答:


22

使用-n目的no-recurse

$ ack -n foo

grepデフォルトでは再帰的ではありません-r。再帰的検索が必要な場合にのみフラグを使用してください。

grep次のように現在のディレクトリを検索できます。

$ grep -- foo *

13
質問に答えませんか?(深さ2に再帰したい場合)
スティーブンルー

良い点、私はそれを見逃した。助言がありますか?
エリックウィルソン

29

-exec引数を使用して検索できます。例:

find . -maxdepth 1 -exec grep foo {} \;

これはスケーリングすることができます、すなわち -maxdepth 2


ステファン、私の答え(-maxdepth 1)は拡張可能でした。たとえば-maxdepth 2。あなたが行った編集をどのように説明するかわかりません。
デビッドウィルキンス14年

@を使用しないと、@ stephaneに到達しません。
Braiam 14年

4
はい、申し訳ありませんが、編集内容があまりにも邪魔になることに同意します。(-maxdepth)は移植性のある/標準の構文ではないことを明確にしたいかもしれません(GNUと一部のBSDのみ)。また、\;ここで使用しても意味がありません(grepファイルごとに1 つ実行します)。使用grep -H foo {} +(GNUの特定)またはgrep foo /dev/null {} +(標準)は、必ずファイル名が常に印刷されていることを確認します。標準と同等には-maxdepth 2なりますfind . -path './*/*' -type d -prune -o -type f -exec ...
ステファンChazelas

2
また、GNU はディレクトリを読み取ろうとしないので(ディレクトリを再帰しない)、ディレクトリのエラーメッセージ(を指定.しない場合を含む)が表示されることに注意してください。あなたは追加することもできますし追加し、より良い(GNU grepのと仮定して)か、にまたはより良い(またはGNUを想定して、あなたはおそらくしたくないとして)非正規のファイルを読むために。-mindepth 1grep-r-d skipgrep! -type dfind-type f-xtype ffindgrep
ステファンシャゼル14年

4
私はgrep -Hinこのアプローチで使用する傾向があるため、ファイル名とオカレンスが存在する行を確認できます。
GDP2
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.