find / grep命令而不搜索已挂载的共享


34

使用find命令时,几乎总是需要搜索本地驱动器。但是,我几乎总是安装了超大型网络共享,这些都包含在搜索中。有没有一种简单的方法可以将find命令,grep命令和其他类似命令中的命令排除在外?例:

查找/ -name .vimrc

Answers:


46

使用该-fstype local选项查找:

find / -fstype local -name .vimrc

如果您只想排除特定路径,则可以使用-prune

find / -name /path/to/ignore -prune -o -name .vimrc

更新:

local伪文件系统类型是在版本中是否带有OS X可用,但不是在GNU的发现(由GNU查找认可fstypes中)。

如果您使用的是GNU find(与大多数linux系统一样),则改为使用-mount

find / -mount -name .vimrc

这对grep也有用吗?
Flotsam N. Jetsam

1
我认为grep没有这样的选择。我通常使用find管道grep到此答案所示:superuser.com/questions/80033/…。最近,我一直在使用ackBetterthangrep.com),但是ack似乎没有选择仅搜索本地驱动器的选项。
Doug Harris

我的修改被拒绝,因此只发表评论。基本上,第一个示例是错误的,因为您需要对其进行添加-prune,否则它仍然会遍历不需要的文件系统。我认为第二个示例应该-path代替,-name因此它将忽略路径。FWIW ...最后一个示例确实起作用,它停留在“当前文件系统”上,因此不会遍历其他文件。
rogerdpack


0

最初的问题是仅在本地磁盘上查找,因此为了完整起见,这就是我使用的方法。

for PART in `awk '(!/^#/ && $6 != "0" || $3 == "xfs" ) { print $2 }' /etc/fstab 2>/dev/null`; do find $PART -xdev -name .vimrc -print 2>/dev/null; done

只要您的fstab设置正确,它就应该只搜索本地磁盘。也就是说,cifs挂载的最终标志应设置为0。当我们开始使用RHEL7时,我将xfs文件系统的OR包括在内,它们也应设置为0,因为它们无意在重启后重新进行磁盘重组。

希望能有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.