25

シェルグロブを使用してネストされたディレクトリを識別する方法はありますか?

したがって、dir / dir1 / dir2 / dir3 / dir4 / dir5 / ..があり、それらすべての下にファイルがある場合、すべてのディレクトリの下のすべてのファイルに一致する同等のグロブパターンは、次のようになります。ls -R

4

6 に答える 6

26

Bash 4ではshopt -s globstar、、、およびzshを使用**/*して、隠しファイルを除くすべてを含めることができます。shopt -s dotglobBash 4またはsetopt dotglobzshで実行して、隠しファイルを含めることができます。

kshで、それをset -o globstar有効にします。ドットファイルを暗黙的に含める方法はないと思いますが、うまくいくと思います**/{.[^.],}*

于 2010-12-03T19:37:32.850 に答える
6

特にgit(gitignore、gitattributes、およびファイル名を受け取るコマンド)について:パターンにスラッシュが含まれていない場合、*ワイルドカードは深く一致します。スラッシュが含まれている場合、 gitはフラグを使用してfnmatchを呼び出しFNM_PATHNAME、単純なワイルドカードはスラッシュと一致しません。**深く一致することはサポートされていません。たぶん、この種のディープマッチングは、新しいFNM_STARSTARフラグと、glibc、gnulib、およびその他の場所での実装によって、より広くサポートされる可能性があります。

于 2010-12-03T20:27:40.497 に答える
2

単にリストするのではなく、findによって返されたすべてのファイルを処理したい場合は、それらをxargsにパイプすることができます。

find <directory> -type f | xargs ls

ただし、これは再帰フラグを持たないコマンド専用です。

于 2010-12-03T19:41:16.507 に答える
1

あなたは試すことができます:

**/*.*

ただし、隠しファイル(ファイルなど.git)は無視されます。時にはそれは命の恩人です。

続きを読む:現在のディレクトリ内のすべてのファイルに再帰的に展開されるものは何ですか?SOで

于 2015-04-18T23:34:47.630 に答える
0

バニラBashでこれを行う方法はありませんが、ほとんどのコマンドは、-Rまたは--recursiveオプションを受け入れて、ディレクトリに降りるように指示します。

ディレクトリまたはそのサブディレクトリ内の任意の場所にあるすべてのファイルを一覧表示するだけの場合は、findを使用できます。

-type f指定されたディレクトリを持つファイル()を再帰的に検索するには:

find <directory> -type f
于 2010-12-03T19:26:33.000 に答える
0

ツリーを使用できます。すべてのフォルダが再帰的に表示されます。

tree <path>
于 2010-12-03T19:38:32.163 に答える