"-not -path "*/FolderName/*""を使用している場合、"find"はディレクトリを参照しますか?

私はfind "/home/../.." -type f -not -path "*/FolderName/*"無視するのに慣れていますフォルダ名含まれるものから。しかし、私はfindまだこれを繰り返していることを読んだ。フォルダ名。上記のコマンドを使用してこのフォルダ内のファイルを検索すると、ファイルが一覧表示されないため、そのフォルダがまだ閲覧されているかどうかはわかりません。-prune実際に巡回されたフォルダを無視するというのですが、それが-prune本当に必要なのかよくわかりません。

ベストアンサー1

(暗黙-depth的に)、、、、、(オプションで置き換えられます)、、、/述語(すべての実装がこれらすべてをサポートしているわけではありません)は、ディレクトリ巡回に影響を与える唯一の述語です。-delete-depth-prune-maxdepth <n>-depth [+-]<n>-follow-L-quit-exit-xdev-mount

代わりにここ

... ! -path '*/whatever/*' ...

あなたはできます:

... \( ! -name whatever -o -prune \) ...

または直接除外したい場合whatever(ただし! -path '*/whatever/*'機能しません):

... -name whatever -prune -o \( ... \)

挿入する必要があるもの今後のような述語-type f

これにより、*一部のロケールおよび一部の実装(ほとんどの一般的なロケールのGNUなど)で文字に変換されないバイトシーケンスの不一致の問題も回避されます。find

あなたの例は次のとおりです。

find "/home/../.."  \( ! -name FolderName -o -prune \) -type f -print

または:

find "/home/../.." -name FolderName -prune -o \( -type f -print \)

FolderName(タイプではないファイルも含め、名前付きのファイルはすべて除外されます。目次)。

おすすめ記事