使用find命令时 |xargs(管道xargs)与-exec的区别
2017-09-18 18:44
639 查看
1.题目
使用find命令的时候|xargs(管道xargs)与-exec有什么区别?
2.解决
一般来说这两个参数或命令是一样的。可是在一些情况下尤其是打包压缩的时候差别就很大了。
find /oldboy -type f |xargs find命令找到的文件一次性都给 |xargs 处理
find /oldboy -type f -exec -exec find命令找到一个文件 就传递给 -exec 处理一次
测试方法—-通过打包压缩tar命令进行测试
测试环境
[root@show ~]# find /oldboy -type f /oldboy/stu02.txt
/oldboy/stu00.txt
/oldboy/stu...txt
/oldboy/stu10.txt
测试|xargs
[root@show ~]# find /oldboy -type f |xargs tar zcf /tmp/oldboy-xargs.tar.gz tar: Removing leading `/' from member names
#检查结果
[root@show ~]# tar tf /tmp/oldboy-xargs.tar.gz
oldboy/stu00.txt
oldboy/stu...txt
oldboy/stu10.txt
结果正常,我们要压缩的文件都在。
测试-exec
[root@show ~]# find /oldboy -type f -exec tar zcf /tmp/oldboy-exec.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
[root@show ~]# tar tf /tmp/oldboy-exec.tar.gz
oldboy/stu00.txt
奇怪为何会这样呢?压缩包中只有一个文件了。
解释:
find /oldboy -type f |xargs tar zcf /tmp/oldboy-xargs.tar.gz
相当于
tar zcf /tmp/oldboy-xargs.tar.gz /oldboy/stu02.txt /oldboy/stu10.txt /oldboy/stu08.txt /oldboy/stu01.txt /oldboy/stu07.txt /oldboy/stu03.txt /oldboy/stu09.txt /oldboy/stu05.txt /oldboy/stu04.txt /oldboy/stu06.txt /oldboy/stu00.txt
find /oldboy -type f -exec tar zcf /tmp/oldboy-exec.tar.gz {} \;
相当于
tar zcf /tmp/oldboy-exec.tar.gz /oldboy/stu00.txt
tar zcf /tmp/oldboy-exec.tar.gz /oldboy/stu...txt
tar zcf /tmp/oldboy-exec.tar.gz /oldboy/stu10.txt
相当于执行了很多次,打包压缩的命令而且压缩包名字都一样,所以会不断的覆盖。
3.统计信息
转载自http://lidao.blog.51cto.com/3388056/1927694
使用find命令的时候|xargs(管道xargs)与-exec有什么区别?
2.解决
一般来说这两个参数或命令是一样的。可是在一些情况下尤其是打包压缩的时候差别就很大了。
find /oldboy -type f |xargs find命令找到的文件一次性都给 |xargs 处理
find /oldboy -type f -exec -exec find命令找到一个文件 就传递给 -exec 处理一次
测试方法—-通过打包压缩tar命令进行测试
测试环境
[root@show ~]# find /oldboy -type f /oldboy/stu02.txt
/oldboy/stu00.txt
/oldboy/stu...txt
/oldboy/stu10.txt
测试|xargs
[root@show ~]# find /oldboy -type f |xargs tar zcf /tmp/oldboy-xargs.tar.gz tar: Removing leading `/' from member names
#检查结果
[root@show ~]# tar tf /tmp/oldboy-xargs.tar.gz
oldboy/stu00.txt
oldboy/stu...txt
oldboy/stu10.txt
结果正常,我们要压缩的文件都在。
测试-exec
[root@show ~]# find /oldboy -type f -exec tar zcf /tmp/oldboy-exec.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
[root@show ~]# tar tf /tmp/oldboy-exec.tar.gz
oldboy/stu00.txt
奇怪为何会这样呢?压缩包中只有一个文件了。
解释:
find /oldboy -type f |xargs tar zcf /tmp/oldboy-xargs.tar.gz
相当于
tar zcf /tmp/oldboy-xargs.tar.gz /oldboy/stu02.txt /oldboy/stu10.txt /oldboy/stu08.txt /oldboy/stu01.txt /oldboy/stu07.txt /oldboy/stu03.txt /oldboy/stu09.txt /oldboy/stu05.txt /oldboy/stu04.txt /oldboy/stu06.txt /oldboy/stu00.txt
find /oldboy -type f -exec tar zcf /tmp/oldboy-exec.tar.gz {} \;
相当于
tar zcf /tmp/oldboy-exec.tar.gz /oldboy/stu00.txt
tar zcf /tmp/oldboy-exec.tar.gz /oldboy/stu...txt
tar zcf /tmp/oldboy-exec.tar.gz /oldboy/stu10.txt
相当于执行了很多次,打包压缩的命令而且压缩包名字都一样,所以会不断的覆盖。
3.统计信息
转载自http://lidao.blog.51cto.com/3388056/1927694
相关文章推荐
- 老男孩教育每日一题-2017年5月19日-使用find命令的时候 |xargs(管道xargs)与-exec有什么区别?
- linux xargs命令的使用及其与exec、管道的区别
- linux xargs命令的使用及其与exec、管道的区别
- find -exec 与 xargs的区别与使用
- 关于 ‘--exec’ 参数( find 命令)及介绍 ‘xargs ’命令区别(新版)
- linux xargs命令的使用及其与exec、管道的区别
- 关于 ‘--exec’ 参数( find 命令)及介绍 ‘xargs ’命令区别
- find 命令-exec 参数与 xargs之间的区别
- find 和xargs 结合使用修改文件名,和exec做备份
- linux shell 管道命令(pipe)使用及与shell重定向区别
- Linux命令-find及xargs的使用
- linux系统中find命令之exec使用介绍
- BASH命令和SHELL脚本总结(15)find和xargs和exec和rsync
- linux系统find命令之xargs使用实例分享
- linux 命令中的find locate whereis which type 使用区别
- linux shell 管道命令(pipe)使用及与shell重定向区别
- freebsd find命令使用参数和Sed命令xargs命令详解
- find命令使用-exec 进行两次大括号传入路径进行cat重定向到对应的特定文件
- command: find命令-exec参数的使用说明(转)
- Linux下which、whereis、locate、find命令的使用和区别