LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 913|回复: 7

(已解决)一个初学者的小问题。。。关于管道符

[复制链接]
发表于 2009-12-27 21:09:05 | 显示全部楼层 |阅读模式
我想写一个命令管道线,来查找目录中3天没有访问过的文件,并压缩它们。
这是我写的命令: find . -atime +3 | tar -czvf tarfile.tar.gz
执行后,终端提示: tar: 谨慎地拒绝创建空归档文件 用‘tar --help’或‘tar --usage’获取更多信息。
我错在哪儿?是不是我管道符用错了?望大家不吝赐教!!!
还有这个,我也同样不知道错在哪儿: find . -atime +3 -ok tar -czvf tarfile.tar.gz {} \;
发表于 2009-12-27 23:26:43 | 显示全部楼层
  1. tar -czvf tarfile.tar.gz `find . -atime +3`
复制代码

另外建议:
  1. tar -czvf /tmp/tarfile.tar.gz `find . -atime +3`
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-28 16:59:35 | 显示全部楼层
谢谢你的帮助,但是这条命令又错在哪儿呢:  find . -atime +3 -ok tar -czvf tarfile.tar.gz {} \;
回复 支持 反对

使用道具 举报

发表于 2009-12-28 17:24:01 | 显示全部楼层
你执行以下语句就明白了:
  1. find . -atime +3 -ok echo {} \;
复制代码

你会发现文件名是逐个显示而不是一次全部显示的
也就是说执行的是

echo file1
echo file2
....
而不是
echo file1 file2 ...

tar 同理
除非你用tar的添加而不是生成功能,否则达不到目的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-28 17:57:04 | 显示全部楼层
谢谢,您的意思我明白,但是,无论我把tar的参数改为-rzvf还是-Azvf,抑或是-czvrf都无法达到目的。。。。
回复 支持 反对

使用道具 举报

发表于 2009-12-28 18:09:50 | 显示全部楼层
压缩方式下不能追加,去掉 z 参数可以
回复 支持 反对

使用道具 举报

发表于 2009-12-28 18:15:11 | 显示全部楼层
find . -atime +3 | xargs tar -rvf tarfile.tar {}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-28 21:09:46 | 显示全部楼层
谢谢你们的帮助!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表