红联Linux门户
Linux帮助

find name 参数的问题

发布时间:2011-05-31 21:35:36来源:红联作者:惊鸿浪子
最近有个问题查找以为.o、.ps、.jpg为后缀的文件。
我弄了一下午,虽然有一种方法可以解决,但是我一直不明白find 与正则表达式的使用
我最后用如下命令解决:就是当前目录
find -name "*.o" -o -name "*.ps" -o -name "*.jpg"
但是为什么下面的命令不行呢?
find -name "*.o | *.ps|*.jpg"
或者find -name ("*.o ")| (*.ps)|(*.jpg)"
或者如下find -name "*.o "| "*.ps"|"*.jpg)"
那位大哥 解决一下,
主要解释一下“|”操作符为什么没有用呢!
文章评论

共有 5 条评论

  1. 惊鸿浪子 于 2011-06-02 08:36:57发表:

    5# age


    我才刚学sed ,awk 都不会用

  2. age 于 2011-05-31 22:52:52发表:

    [i=s] 本帖最后由 age 于 2011-5-31 22:59 编辑 [/i]

    awk也行啊[code]du -a | awk '{print $2}' | awk 'BEGIN{FS="."}{if($NF ~ /jpg|jpeg|png/) print $0}'[/code]或者更简单点的写法[code]du -a | awk '{if($NF ~ /(jpg|jpeg|png)$/) print $2}'[/code]

  3. 惊鸿浪子 于 2011-05-31 22:49:50发表:

    3# age


    哦我说呢,可惜我还不会sed什么的啊
    看来只能按照刚才的那么办了啊

  4. age 于 2011-05-31 22:36:31发表:

    find不支持正则表达式吧
    可以用du获得文件列表, 然后用sed或awk去正则匹配
    用du不用ls的原因是, 在子目录递归时, du显示的信息更友好, 更利于参数传递
    以sed为例[code] du -a . | sed -r 's/^[0-9]*[ \t]+//g' | sed -n -r '/jpg|jpeg|png$/p'[/code]

  5. 惊鸿浪子 于 2011-05-31 21:49:14发表:

    没人回啊! 我自己先占一个!