任意の深さのワイルドカード

任意の深さのワイルドカード

grep任意のディレクトリの深い場所にあり、/path/to/dirファイル名の場所を持つパスを使用したいと思いますfoo。任意深さのワイルドカードはと思っ**て試してみました。

grep some_pattern /path/to/dir/**/foo

**ただし、その部分が単一のディレクトリの深さを表すファイルにのみ一致しているようです。

/path/to/dir/bar/foo

/path/to/dirファイル名のあるディレクトリ内の任意の深さのパスを一致させるにはfoo

ベストアンサー1

zshを使用してください。 zshexpn(1) のマニュアルページの「再帰ワイルドカード」セクションで:

'(foo/)#' 形式のパス名コンポーネントは、foo パターンに一致するゼロ個以上のディレクトリで構成されるパスと一致します。

簡単に言えば、 '**/' は '(*/)#' と同じです。したがって、これは現在のディレクトリとサブディレクトリのファイルと一致します。

[...] この形式はシンボリックリンクに従いません。代替「***/」が機能しますが、それ以外は同じです。

これはまた、**隠されたディレクトリ(名前がドットで始まるディレクトリ)がデフォルトで含まれていないことを意味します。一致させるには、このGLOB_DOTSオプションを設定するか、Dグローバル修飾子を使用してください。

grep some_pattern /path/to/dir/**/foo(D)

globstarBashを使用するには、このオプションを明示的に設定する必要があります**

shopt -s globstar

おすすめ記事