再帰的に戻る grep

再帰的に戻る grep

戻ると再帰的にgrepするにはどうすればよいですか?次のフォルダがあるとしましょう。

20170808
20170809
20170810

grepを実行すると、grep -ri 'string'各フォルダをアルファベット順にインポートして「文字列」を検索します。最後のフォルダから最初のフォルダまで逆方向に検索するにはどうすればよいですか?

答え1

順序はgrep -r通常ランダムであり(必ずしもアルファベット順である必要はありません)、通常はディレクトリ内のファイルの並べ替え方法と、ディレクトリ巡回を最適化するgrepために実装に基づいて並べ替えることができます。

ここではGNU grep2.25を使用して:

$ grep -r . .
./4/c:c
./1/b:b
./2/a:a
./10/d:d

特定の順序が必要な場合は、放棄し、必要な-r順序でファイルのリストをパラメータとして提供する必要があります。

たとえば、あなたの場合は以下を使用してくださいzsh

$ grep -H . ./**/*(D.On)
./4/c:c
./2/a:a
./1/b:b
./10/d:d

ここではOn逆順を使用してください名前でn数値ソート用の修飾子を追加できます。

$ grep -H . ./**/*(D.nOn)
./10/d:d
./4/c:c
./2/a:a
./1/b:b

-H別のGNUgrep拡張機能では、ファイルが1つしかない場合でもファイル名が常に印刷されるようにします。別の実装では、空のファイルをgrep引数として追加できます。たとえば、少なくとも2つのファイル名が渡されることを保証します/dev/null。しますgrep

これも非常に便利ですzgrep 回転時系列でソートされたログファイル(例:access.log.10.gz... access.log.2.gz、、、):access.log.1access.log

zgrep something access.log*(nOn)

(押すこともできますが、最後の修正zgrep something access.log*(Om)信頼できる場合)。

関連情報