73 如何以特定字符串递归搜索目录名称,而该字符串只是目录名称的一部分? 例如:目录名称为“ 8.0.3-99966_en”,但我想递归搜索字符串为“ 99966”的目录。 grep — 鲍勃·佩雷斯 source
95 您可以使用以下find命令: find YOUR_STARTING_DIRECTORY -type d -name "*99966*" -print 例: find ~ -type d -name "*99966*" -print 应该-type d从主目录()开始查找所有~名称包含字符串“ 99966”(-name "*99966*")的目录(),然后输出它们(-print)。 — 尔加索 source 如何从搜索中排除某个目录?我需要搜索/,但是却得到了很多/ proc结果,这些我并不在乎。 — Kozuch 2014年 @Kuzuch(过一会儿!):您可以使用负grep,将sinf搜索管道化为以下命令:find <whatever> | grep -v“ / proc”将过滤掉包含搜索字符串的所有行。 — Juan Lanus 2015年
19 为避免所有“权限被拒绝”结果,可以使用: find / -type d -name "*99966*" -print 2>/dev/null 有关更多信息,请参见有关空设备的这篇文章和有关标准流的这篇文章。 — 丹·弗莱彻 source 为我工作: — 〜– smatthewenglish
8 您可以通过管道输出grep使其突出显示目录名称, 例如 find / -type d | grep "directory name" 在/表示搜索整个计算机 — 科林 source @Zanna你说得对,我已经编辑了答案。感谢您指出这一点 — Collin
3 一种简单的方法是使用find | egrep string。如果命中太多,则使用该-type d标志进行查找。在要搜索的目录树的开头运行命令,否则也必须提供目录作为自变量find。 另一种方法是使用ls -laR | egrep ^d。 该locate命令也很方便:locate string — 贝拉夸 source