再帰的なグローバル?

再帰的なグローバル?

私は次のようなものを書きたいです:

$ ls **.py

すべての.pyファイル名を取得するには、ディレクトリ階層を再帰的に巡回してください。

検索する.pyファイルがあっても、シェルは次の出力を提供します。

ls: cannot access **.py: No such file or directory

私が望むことをする方法はありますか?

編集する:私は特定のケースに興味がないことを指摘したいと思いますls。しかし、質問はglob構文についてです。

ベストアンサー1

Bashで再帰的なglobを実行するには、globstarBashバージョン4以上の機能が必要です。

~からバッシュ文書:

globstar
**設定されている場合、ファイル名拡張コンテキストで使用されるパターンは、すべてのファイルとゼロ以上のディレクトリとサブディレクトリと一致します。パターンの後に行くと、/ディレクトリとサブディレクトリのみが一致します。

サンプルパターンの場合:

shopt -s globstar
ls -d -- **/*.py

shopt -s globstar実行するには実行する必要があります。この機能はbashでデフォルトで有効になっていないため、shopt実行して有効にできます。

おすすめ記事