今天准备找出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 / 为什么不可以)