GNU/Linux >> Linux の 問題 >  >> Linux

再帰的なグロブ?

このようなものを書きたいのですが:

$ ls **.py

すべての.pyファイル名を取得するには、ディレクトリ階層を再帰的にウォークします。

検索する.pyファイルがある場合でも、シェル(bash)は次の出力を提供します:

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

私がやりたいことをする方法はありますか?

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

承認された回答:

bashで再帰的なグロブを実行するには、globstarが必要です。 bashバージョン4以降の機能。

bashのマンページから:

globstar
    If set, the pattern ** used in a pathname expansion context will
    match all files and zero or more directories and subdirectories.
    If the pattern is followed by a /, only directories and
    subdirectories match.

パターンの例:

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

Linux
  1. Recursive Grep Vs Find / -type F -exec Grep {};どちらがより効率的/高速ですか?

  2. Rbindマウント後の再帰的なUmount?

  3. シェル変数の拡張とグロブとスプリットの影響?

  1. 実行する前に再帰的なSed検索をテストして置き換えますか?

  2. zsh/bash で大文字と小文字を区別しない Glob

  3. Linux の glob() で大文字と小文字を区別しない

  1. ディレクトリでのみ再帰的な chmod を実行するにはどうすればよいですか?

  2. URLパスの子に限定されたwget再帰

  3. フォルダーへのアクセスを制限するために再帰的な chmod が本当に必要ですか?