如何使用 find 命令从搜索中排除文件夹 proc 和 sys ?

Abd*_*red 14 command-line find

我想执行一个脚本来挑选一个随机目录路径:

find / -type d | shuf -n1 
Run Code Online (Sandbox Code Playgroud)

不幸的是,我收到有关禁止进入某些目录的错误消息。

如何使用 find 从搜索中排除目录?

Gil*_*il' 18

要排除特定路径,在 Linux 上:

find / -path /sys -prune -o -path /proc -prune -o -type d
Run Code Online (Sandbox Code Playgroud)

另一种方法是告诉find不要在不同的文件系统下递归。

find / -xdev -type d
Run Code Online (Sandbox Code Playgroud)

您还可以使用locate来查询文件名数据库(通常每晚更新,您也可以使用 手动更新它updatedb)而不是实时系统。

locate '*' | shuf -n 1
Run Code Online (Sandbox Code Playgroud)


小智 7

使用 GNU find 您也可以使用正则表达式选项,例如:

find / -regextype posix-extended -regex "/(sys|srv|proc)" -prune -o -type d
Run Code Online (Sandbox Code Playgroud)