web-dev-qa-db-ja.com

AIXでのfindと同等のmaxdepth

サブディレクトリを再帰的に検索せずに、一部のディレクトリでマスクによってすべてのファイルを取得しようとしています。そのため、AIXにはオプション-maxdepth 0はありません。

-Pruneについて聞いたことがありますが、それでも機能しません。

コマンドは次のようになるはずです

find dir \( ! -name dir -Prune -type f \) -a -name filemask

しかし、それは機能しません。

正しいコマンドを書いて、それがどのように機能するか説明していただけませんか?

[〜#〜]更新[〜#〜]

コマンドらしい

find dir ! -path dir -Prune

dir内のすべてのファイルとカタログを印刷しますが、dir/*内のファイルとカタログは印刷しないので、私の場合に使用できます。

6
Vikora

あなたが欲しい:

find dir/. ! -name . -Prune -type f -name filemask

または:

find dir ! -path dir -Prune -type f -name filemask

filemaskのサブディレクトリを検索せずに、dir内のdirという通常のファイルを検索するには。

find dir ! -name dir -Pruneでは、dir/dirディレクトリがあった場合に問題が発生します。

findは、引数として渡されたdir/.ファイル以外の.と呼ばれるファイルに出くわさないため、dir/.アプローチはこれを回避します。

-pathのアプローチは、ファイルのパスを(名前だけではなく)調べることで回避できます。-path dirdirとは一致しますが、dir/dirとは一致しません(つまり、dirはディレクトリのみでプルーニングされません)。ただし、古いバージョンのAIXでは-pathを使用できない場合があります。

より一般的には、GNUの-maxdepth nまたはFreeBSD -depth nに相当する標準については、 POSIX検索を特定の深さに制限しますか?

8

AIXでは、-Pruneオプションを使用できます。

find ./* -Prune
4
Damanvir Singh