任意のディレクトリパスを選択するスクリプトを実行したいと思います。
find / -type d | shuf -n1
残念ながら、特定のディレクトリがブロックされたというエラーメッセージが表示されます。
findを使用して検索からディレクトリを除外する方法は?
答え1
特定のパスを除外するには、Linuxで次のようにします。
find / -path /sys -prune -o -path /proc -prune -o -type d
別の方法は、find
他のファイルシステムで繰り返されないように指示することです。
find / -xdev -type d
また、使用することができます場所updatedb
ライブシステムではなく、ファイル名データベース(通常は夜ごとに更新され、手動更新を使用することもできます)を照会します。
locate '*' | shuf -n 1
答え2
GNU findを使用すると、正規表現オプションも使用できます。たとえば、次のようになります。
find / -regextype posix-extended -regex "/(sys|srv|proc)" -prune -o -type d
答え3
一つの方法はただ含む物理ファイルシステム
物理ファイルシステムのすべてのマウントポイントを識別し、1行に入力します。
$ realfs=$(df -x tmpfs -x devtmpfs | tail -n +2 | awk '{print $6;}' | xargs)
$ echo $realfs
/ /home /dos /Data
find
これらのマウントポイントに対してのみ実行してください。
$ find ${realfs} -type d |& grep -v "Permission denied" | shuf -n1
/Data/share/source/pan2/.git/refs/tags
(|&
4.xにbashismが追加されました。4.4で動作します。)