使用同一个命令可以递归查找某些文件夹,但不能查找其他文件夹吗?

使用同一个命令可以递归查找某些文件夹,但不能查找其他文件夹吗?

我想使用同一个命令find递归遍历某些子文件夹,$HOME但不遍历其他子文件夹。可以吗?

为了澄清起见,我想递归到~/Desktop~/Documents~/Dropbox,但不想递归到~/.config~/.dropbox~/.cache

答案1

您可以将想要从中开始的目录作为多个起点传递给find

您想要用来find搜索一些特定目录,所有这些目录发生作为你的主目录的子目录:

为了澄清起见,我想递归到~/Desktop~/Documents~/Dropbox,但不想递归到~/.config~/.dropbox~/.cache

因此,您只需将这些目录作为起点即可find。我们经常使用单个目录作为起点,通常是.,但find不限于此。

find ~/Desktop ~/Documents ~/Dropbox -name my-file

代替-name my-file与您想要运行的其余find命令(即测试和操作)一起。

这不会提供你的主目录本身作为起点find,因为它提供的任何目录都不包含你的主目录——它们是包含于它——您的主目录中不包含在任何特定目录中的文件将不会被找到。

如果这些目录恰好是全部您的主目录中名称不以 开头的子目录.,那么您可以让 shell 为您构建列表:

find ~/*/ -name my-file

*匹配文件名中的任何字符序列。最后一个尾随字符/导致仅匹配目录。默认情况下,shell 不会扩展*名称以 开头的文件.。因此,除非您启用了dotglobshell 选项(或者您的 shell 具有的任何选项,如果您的 shell 不是 Bash),否则 生成的列表将*不包括您的主目录的.config.dropbox或子目录。.cache

名称以 开头的文件和目录. 并位于作为起点传递的目录中当然还是会被发现的。

相关内容