问题描述
如何递归搜索具有特定字符串的目录名称,其中字符串只是目录名称的一部分?
例如:目录名称是”8.0.3-99966_en”,但我想以递归方式搜索字符串为”99966″的目录。
最佳解决办法
您可以使用find
命令:
find YOUR_STARTING_DIRECTORY -type d -name "*99966*" -print
例:
find ~ -type d -name "*99966*" -print
应找到从您的主目录(~
)开始的所有目录(-type d
),其名称包含字符串”99966″(-name "*99966*"
)并输出它们(-print
)。
次佳解决办法
要避免所有”Permission denied”结果,您可以使用:
find / -type d -name "*99966*" -print 2>/dev/null
有关详细信息,请参阅null device上的这篇文章和standard streams上的这篇文章。
第三种解决办法
您可以将输出通过管道传输到grep
,以使其突出显示目录名称
find / -type d | grep "directory name"
/
表示搜索整台计算机
第四种办法
一种简单的方法是使用find | egrep string
。如果命中次数过多,请使用-type d
标志进行查找。在要搜索的目录树的开头运行该命令,或者您也必须将该目录作为参数提供给find
。
另一种方法是使用ls -laR | egrep ^d
。
locate
命令也派上用场:locate string