如何以特定字符串递归搜索目录名称,其中该字符串仅是目录名称的一部分


73

如何以特定字符串递归搜索目录名称,而该字符串只是目录名称的一部分?

例如:目录名称为“ 8.0.3-99966_en”,但我想递归搜索字符串为“ 99966”的目录。

Answers:


95

您可以使用以下find命令:

find YOUR_STARTING_DIRECTORY -type d -name "*99966*" -print

例:

find ~ -type d -name "*99966*" -print

应该-type d从主目录()开始查找所有~名称包含字符串“ 99966”(-name "*99966*")的目录(),然后输出它们(-print)。


如何从搜索中排除某个目录?我需要搜索/,但是却得到了很多/ proc结果,这些我并不在乎。
Kozuch 2014年

@Kuzuch(过一会儿!):您可以使用负grep,将sinf搜索管道化为以下命令:find <whatever> | grep -v“ / proc”将过滤掉包含搜索字符串的所有行。
Juan Lanus 2015年


8

您可以通过管道输出grep使其突出显示目录名称,
例如

find / -type d | grep "directory name"

/表示搜索整个计算机


@Zanna你说得对,我已经编辑了答案。感谢您指出这一点
Collin

3

一种简单的方法是使用find | egrep string。如果命中太多,则使用该-type d标志进行查找。在要搜索的目录树的开头运行命令,否则也必须提供目录作为自变量find

另一种方法是使用ls -laR | egrep ^d

locate命令也很方便:locate string

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.