shell命令xargs

今天准备找出nginx非空的日志并压缩成一个文件

find .  -name "meta.access.log.*" -type f -size +0k | tar -cjv -f log.tar.bz2

#tar: Cowardly refusing to create an empty archive(不成功)

于是想起一个一直疑惑的问题  ls 123.txt | tar ***  为什么失败

问学长  学长说pipe传递的是内容 tar... 需要的是参数(不支持标准输入流)  xargs可以将stdin收到的数据作为后面命令的参数

find . -name "meta.access.log.*" -type f  -size +0k | xargs tar -cjv -f log.tar.bz2
find . -name "meta.access.log.*" -type f -size +0k print0 | xargs -0 tar -cjv -f log.tar.bz2 (以NULL作为分界符)

find 还有一个exec参数

find . -name "meta.access.log.*" -type f -size +0k -exec tar -cjv -f log.tar.bz2 {} \;(不知道find / 为什么不可以)
上一篇:zabbix (一:zabbix服务端)


下一篇:3ds Max光照纹理导入Unity的教程.