正規表現を使用してパスをフィルタリングし、コマンドを検索するには?

正規表現を使用してパスをフィルタリングし、コマンドを検索するには?

次のディレクトリセットがあります。

/level1/user01/dir01
/level1/user01/dir02
/level1/user01/dir03
/level1/user01/dir04
/level1/user02/dir01
/level1/user02/dir02
/level1/user02/dir03
/level1/user02/dir04
/level1/user03/dir01
/level1/user03/dir02
/level1/user03/dir03
/level1/user03/dir04

findを使用して、各ユーザーのdir02ディレクトリから拡張子が.ozのファイルを検索したいと思います。

私は利用できる

find /level1/ -name "*.oz"

しかし、dir02ディレクトリ内でのみ検索したいと思います。

これはうまくいきません

find /level1/"[a-z][0-9]"/dir02 -name "*.oz"

ベストアンサー1

最初の引数に複数のディレクトリを指定する場合は、シェルによって異なります。したがって、bashとzsh、および同様のもの(cshとtcsh?)ではシェルグローブのみを使用します。シェルはこのglobを興味のあるディレクトリに拡張し、複数のfind引数を使用できるようにします。

find /level1/*/dir02 -name "*.oz"

いくつかの追加:

  • ここで構文は正規表現ではなくglobです。
  • とにかく正規表現が間違っています。 (引用を無視)でなければなりません/level1/[a-z]*[0-9]*/dir02。 sに注意してください*
  • 別のオプションはです-pathman findしかし、これは単にシェルグロブを使用するよりも複雑です。

おすすめ記事