web-dev-qa-db-ja.com

Solarisでdepth / pruneと同等ですか?

ディレクトリ内のいくつかのファイルを見つけようとしています。デフォルトでは、find commandは、指定したディレクトリとそのサブディレクトリを検索しています。

私はdepth/maxdepthPruneを使用しようとしましたが、これを克服するのに役立ちました。 Solarisでdepth/Pruneを使用する正しい方法を誰かが指摘できますか?

私のコードは次のようになります:

find file_path -depth 1 -name '*.log'

次のエラーが発生します。

find: bad option 1
find: [-H | -L] path-list predicate-list
10
user295338

漠然と類似した名前を持つ2つの無関係なオプションを混乱させています。

  • -depthは引数を取りません。存在する場合、ディレクトリ自体を処理する前にディレクトリの内容を処理するようにfindに指示します。
  • -maxdepth N(Nは整数)は、再帰をNレベルのサブディレクトリに制限します。

-maxdepthオプションは、findの一部のバージョンにある拡張機能ですが、Solarisにはありません。 findの標準オプションのみを使用して、再帰せずにディレクトリを処理するコツがあります。サブディレクトリで-Pruneを使用しますが、トップレベルディレクトリは除外します。トップレベルディレクトリを照合する唯一の方法は名前によるため、名前が.(サブディレクトリの名前になることは決してない)になるように調整します。

find /directory/to/traverse/. -name . -o \
                              -type d -Prune -o \
                              -name '*.log' -print