サブディレクトリを再帰的に検索せずに、一部のディレクトリでマスクによってすべてのファイルを取得しようとしています。そのため、AIXにはオプション-maxdepth 0
はありません。
-Prune
について聞いたことがありますが、それでも機能しません。
コマンドは次のようになるはずです
find dir \( ! -name dir -Prune -type f \) -a -name filemask
しかし、それは機能しません。
正しいコマンドを書いて、それがどのように機能するか説明していただけませんか?
[〜#〜]更新[〜#〜]
コマンドらしい
find dir ! -path dir -Prune
dir
内のすべてのファイルとカタログを印刷しますが、dir/*
内のファイルとカタログは印刷しないので、私の場合に使用できます。
あなたが欲しい:
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 dir
はdir
とは一致しますが、dir/dir
とは一致しません(つまり、dir
はディレクトリのみでプルーニングされません)。ただし、古いバージョンのAIXでは-path
を使用できない場合があります。
より一般的には、GNUの-maxdepth n
またはFreeBSD -depth n
に相当する標準については、 POSIX検索を特定の深さに制限しますか?
AIXでは、-Prune
オプションを使用できます。
find ./* -Prune