管道|传递的是字符串、文本、文字、文字符号。
1. 【find+grep】测试
[root@Never-downtime oldboy]# find /oldboy/ -type f -name "*txt" | egrep oldboy
/oldboy/stu3.txt
/oldboy/stu7.txt
/oldboy/stu6.txt
/oldboy/stu2.txt
/oldboy/stu4.txt
/oldboy/stu1.txt
/oldboy/stu8.txt
/oldboy/stu10.txt
/oldboy/stu9.txt
/oldboy/stu5.txt
2. 【head+tail】测试
[root@Never-downtime oldboy]# head -10 stu1.txt |tail -5
5
6
7
8
9
3. 【find+rm】测试
[root@Never-downtime oldboy]# find /oldboy/ -type f -name "*.txt" |rm
command not found
[root@Never-downtime oldboy]# find /oldboy/ -type f -name "*.txt" |xargs rm
4. 【find+sed】测试
[root@Never-downtime oldboy]# find /oldboy/ -type f -name "*.txt" |xargs -i sed 's#oldboy#oldgirl#g'
5. 【find+tar】测试
[root@Never-downtime oldboy]# find /oldboy/ -type f -name "*.txt" | xargs tar cf /data/stu.tar.gz
tar: Removing leading `/' from member names
-rw-r--r-- 1 root root 20480 Apr 8 12:31 /data/stu.tar.gz
[root@Never-downtime oldboy]# tar tf /data/stu.tar.gz
oldboy/stu3.txt
oldboy/stu7.txt
oldboy/stu6.txt
oldboy/stu2.txt
oldboy/stu4.txt
oldboy/stu1.txt
oldboy/stu8.txt
oldboy/stu10.txt
oldboy/stu9.txt
oldboy/stu5.txt
[root@Never-downtime oldboy]# find /oldboy/ -type f -name "*.txt" -exec tar cf /data/stu.tar.gz {} \;
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from^C
[root@Never-downtime oldboy]#
[root@Never-downtime oldboy]#
[root@Never-downtime oldboy]# tar tf /data/stu.tar.gz
oldboy/stu5.txt
[root@Never-downtime oldboy]# tar cf /data/stu.tar.gz $(find /oldboy/ -type f -name "*.txt" )
tar: Removing leading `/' from member names
[root@Never-downtime oldboy]# tar tf /data/stu.tar.gz
oldboy/stu3.txt
oldboy/stu7.txt
oldboy/stu6.txt
oldboy/stu2.txt
oldboy/stu4.txt
oldboy/stu1.txt
oldboy/stu8.txt
oldboy/stu10.txt
oldboy/stu9.txt
oldboy/stu5.txt
[root@Never-downtime oldboy]# tar cf /data/stu.tar.gz `find /oldboy/ -type f -name "*.txt" `
tar: Removing leading `/' from member names
[root@Never-downtime oldboy]# tar tf /data/stu.tar.gz
oldboy/stu3.txt
oldboy/stu7.txt
oldboy/stu6.txt
oldboy/stu2.txt
oldboy/stu4.txt
oldboy/stu1.txt
oldboy/stu8.txt
oldboy/stu10.txt
oldboy/stu9.txt
oldboy/stu5.txt
注意:-exec的执行过程是找到一个执行一个,每找一个就替换掉一个,故只要一个结果。
|管道传递的是字符串,是文本,文字。
|xargs传递的是文件名,如果sed -i修改的时候不加文件名的话会报错