说我需要做:
查找/-name 某个文件.txt
假设根分区/
安装在 上/dev/sda5
;但是,假设我还有 250GB 分区(/dev/sda6
,/dev/sda7
)安装在/media
- 和我目前记不住的另一个位置。假设,我知道我要查找的文件位于 上/dev/sda5
。
显然,上述命令还将进入/media
代表大分区的其他目录,浪费时间在错误的地方寻找文件。
有没有办法指示 find (或其他命令)进行搜索仅有的 /
,/dev/sda5
并且如果目录位于不同的分区上,则不要下降到目录?
答案1
使用-xdev
参数查找
-xdev 不要下降到其他文件系统上的目录。
答案2
根据您的find
实现,有三种不同的选项:-xdev
,-mount
和/或-x
。 它们中的每一个可能表现得略有不同,也取决于实现。
POSIX 标准定义首要的-xdev
”:
这将导致寻找不要继续下降经过具有不同设备 ID 的目录
这是在 GNU 中实现的find
(即查找工具;文档)。GNU
还find
允许您使用-mount
as ”的替代名称-xdev
,为了与其他版本的 find 兼容。“
在 BSD 系统和 macOS 上,选项是-x
,它不是主选项。它们被称为-xdev
”已弃用“。但是,你可以改用-mount
。[手册页FreeBSD和苹果系统]
附加信息
顺便说一下,问题跟踪器上有一些未解决的问题:
https://www.austingroupbugs.net/view.php?id=1133(POSIX)
https://savannah.gnu.org/bugs/?54745(GNU findutils)
你可能会发现 Unix SE 上的这个问题很有趣:
https://unix.stackexchange.com/questions/479886/what-is-the-history-behind-the-name-of-the-xdev-option-in-find
除此以外的工具find
如果你使用ripgrep(rg
)类似rg --files
,您可以使用--one-file-system
选项,其功能与寻找的-xdev
选择。