最近有个问题查找以为.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)"
那位大哥 解决一下,
主要解释一下“|”操作符为什么没有用呢!
惊鸿浪子 于 2011-06-02 08:36:57发表:
5# age
我才刚学sed ,awk 都不会用
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]
惊鸿浪子 于 2011-05-31 22:49:50发表:
3# age
哦我说呢,可惜我还不会sed什么的啊
看来只能按照刚才的那么办了啊
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]
惊鸿浪子 于 2011-05-31 21:49:14发表:
没人回啊! 我自己先占一个!