工作经常需要用find结合其它命令一起使用,下面介绍4种结合方式.
例: 用find查找/data目录下,以.txt文件结尾的文件并复制到/tmp下
方法一
find与|xargs是黄金搭档,-t 参数指定目标目录(效率高,因为 xargs 会让命令作为一行来执行.)
[root@Jonnyan ~]# find /data/ -type f -name"*.txt" | xargs cp -t /tmp
方法二
{} 大括号里的内容为find命令找到的结果(效率低,因为 exec 会让命令分多次执行.)
[root@Jonnyan ~]# find /data/ -type f -name"*.txt" -exec cp {} /tmp ;
方法三
$()=
存放命令的执行结果
[root@Jonnyan ~]# cp $(find /data/ -type f -name"*.txt") /tmp
方法四
-i 参数指定找到的结果放到{}中
[root@Jonnyan ~]# find/data/ -type f -name "*.txt" | xargs -i cp{} /tmp
find 排除多个目录
find /tmp/jonny ( -path /tmp/jonny/dir1 -o -path /tmp/jonny/file1 ) -prune -o -name "*" -print
- 在 shell 中,"与" 和 "或" 有两种表达方式。
- 在 shell 中,"与" 的运算符为 "-a",同时,"与" 的逻辑运算符也可以用 "&&" 表示。
- 在 shell 中,"或" 的运算符为 "-o",同时,"或" 的逻辑运算符也可以用 "||" 表示。
解释参考:http://www.zsythink.net/archives/1154