find が権限に対して不平を言うルートを除外

find が権限に対して不平を言うルートを除外

ディスクボリュームからファイルのリストを作成する必要があります。一部のディレクトリ(ルートの下にあるすべての隠しディレクトリ)には奇妙な権限があり、findでエラーが発生します。

これらすべてのパスを除外しようとしましたが、1つのディレクトリでまだ文句を言います。

find . -type f -not -path './.*/*'
find: ./.DocumentRevisions-V100: Permission denied

権限はこうです(OSで設定するものなのでむやみにしてはいけないと思います)。

d--x--x--x root  wheel   .DocumentRevisions-V100

find文句を避けるために、すべての隠しディレクトリを効果的に省略するように文をどのように変更できますか? (2>/dev/null他の質問について知りたいのと同じようにしたくありません。)

ベストアンサー1

-readableGNU findまたはand述語をサポートする別の検索を使用してください-executable

find . -type d ! \( -readable -executable \) -prune -o -type f -not -path './.*/*' -print

まず、閲覧できないディレクトリをクリーンアップします。その条件が適用されない場合は、別の条件を試してください。

これらのオプションがない場合は、findファイル権限を一致させることができます。

find . -type d ! -perm -u+rx -prune -o -type f ! -path './.*/*' -print

おすすめ記事