2011年3月30日星期三

find的正则表达式

水木上有人问:SHELL如何只list名称是8个数字的文件夹?用ls [0-9](重复9次),或者结合grep可以做到。但是用find怎么做呢?研究了一会儿才给出答案:
find . -type d -regextype posix-egrep -regex '.*/[0-9]{8}'
find-regex不是搜索,而是要匹配整个的路径,所以正则表达式前面要加.*/。默认的正则表达式类型是Emacs类型的。虽然Emacs的正则表达式支持\{\}的重复,但是在find的info里面写到是不支持的,要改成posix-egrep类型的正则表达式就可以用{}了。

没有评论:

发表评论