原来对于比较复杂的按文件名查找都是find | grep
最近发现find本身就是支持正则表达式的 find path -regex "xxx"
find path -iregex "xxx"
这两条命令都是运用base-regexp对文件路径进行匹配,iregex忽略大小写。 但是给出的正则表达式必须要匹配完整的文件路径
比如:find / -regex "find" 这样子是找不到/usr/bin/find的,要像这样find / -regex ".*find"或者更精确一点find / -regex ".*/find"
如果要使用扩展的正则表达式,对于BSD系的find可以在路径名前加一个"-E"选项 GNU的find支持多种风格的正则表达式,用-regextype 指定所使用的正则表达式类型,可选的有emacs(默认),posix-awk,posix-basic,posix-egrep,posix-extended,喜欢了grep -E,所以我就用posix-egrep了 find / -regextype "posix-egrep" -regex ".*/find"