負の条件のfindコマンドは、まだ与えられたディレクトリを考慮します。

負の条件のfindコマンドは、まだ与えられたディレクトリを考慮します。

/home ディレクトリ (直接またはすべてのレベルのサブディレクトリのいずれか) にあるファイル以外のファイルを検索するには、次のコマンドを実行します。

find / ! -path '/home/*'

ただし、次のような「許可拒否」メッセージでエラーが発生します。

find: '/home/user/here/is/some/file': Permission denied

それ自体が「権利拒否」であることは関係ありません。私が嫌いなのは、そこからでも検索しようとしているということです。

最初は/home/user/内のディレクトリを参照するFSの他の場所にいくつかのシンボリックリンクがあるためかもしれないと思いましたが、次のように-Hオプションを試しました。

find -H / ! -path '/home/*'

それでも/ home / *に対応するファイル/ディレクトリが一覧表示されます。

この問題を解決する方法についてのアイデアはありますか?

答え1

-pathこのコンポーネントは、可能なすべてのパスに対して評価されます。検索時間は短縮されません。-pruneこれを行う必要があります。

find / -path '/home/*' -prune -o -print

関連情報