当前位置: 技术问答>linux和unix
shell 正则匹配问题 反向匹配 负匹配
来源: 互联网 发布时间:2016-04-29
本文导语: 我想实现这样一个查找功能: 从当前文档中查找文件和文件夹,但不要查找patha的路径。 比如当前路径下 file: a.txt file: b.txt dir: patha dir: pathb 我想命令应该是: find . -name "*" -p 不匹配patha -exec ls -l {} ; 这...
我想实现这样一个查找功能:
从当前文档中查找文件和文件夹,但不要查找patha的路径。
比如当前路径下
file: a.txt
file: b.txt
dir: patha
dir: pathb
我想命令应该是: find . -name "*" -p 不匹配patha -exec ls -l {} ;
这个问题的关键也就是如何写一个“负匹配”正则表达式来表示: 不匹配 patha(或者说是匹配 不含 patha的字符串)
在网上了找好久,都没有得到正解。
请牛人不吝赐教,多谢多谢:)
从当前文档中查找文件和文件夹,但不要查找patha的路径。
比如当前路径下
file: a.txt
file: b.txt
dir: patha
dir: pathb
我想命令应该是: find . -name "*" -p 不匹配patha -exec ls -l {} ;
这个问题的关键也就是如何写一个“负匹配”正则表达式来表示: 不匹配 patha(或者说是匹配 不含 patha的字符串)
在网上了找好久,都没有得到正解。
请牛人不吝赐教,多谢多谢:)
|
忽略某个目录使用的是-prune选项:
如果在查找文件时希望忽略某个目录,因为你知道那个目录中没有你所要查找的文件,
那么可以使用- p r u n e选项来指出需要忽略的目录。在使用- p r u n e选项时要当心,因为如果你同
时使用了- d e p t h选项,那么- p r u n e选项就会被f i n d命令忽略。
如果希望在/ a p p s目录下查找文件,但不希望在/ a p p s / b i n目录下查找,可以用:
$ find /apps -name "/apps/bin" -prune -o -print
如果在查找文件时希望忽略某个目录,因为你知道那个目录中没有你所要查找的文件,
那么可以使用- p r u n e选项来指出需要忽略的目录。在使用- p r u n e选项时要当心,因为如果你同
时使用了- d e p t h选项,那么- p r u n e选项就会被f i n d命令忽略。
如果希望在/ a p p s目录下查找文件,但不希望在/ a p p s / b i n目录下查找,可以用:
$ find /apps -name "/apps/bin" -prune -o -print
|
参见《LINUX与UNIX SHELL编程指南》
|
find . -name * -exec ls -l {} ; |grep -v patha