web-dev-qa-db-ja.com

findコマンドを使用して、フォルダーprocおよびsysを検索から除外するにはどうすればよいですか?

ランダムなディレクトリパスを選択するスクリプトを実行したいと思いました。

find / -type d | shuf -n1 

残念ながら、特定のディレクトリに入ることの禁止に関するエラーメッセージが表示されます。

検索でディレクトリを検索から除外するにはどうすればよいですか?

10
Abdul Al Hazred

Linuxで特定のパスを除外するには:

find / -path /sys -Prune -o -path /proc -Prune -o -type d

別のアプローチは、異なるファイルシステムで再帰しないようにfindに指示することです。

find / -xdev -type d

locate を使用して、ライブシステムの代わりにファイル名のデータベースをクエリすることもできます(通常は毎晩更新され、updatedbを使用して手動で更新することもできます)。

locate '*' | shuf -n 1

GNUを使用すると、次のように正規表現オプションを使用することもできます:

find / -regextype posix-extended -regex "/(sys|srv|proc)" -Prune -o -type d
6
jose