LinuxSir.cn,穿越时空的Linuxsir!

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

tar打包时,只需要某个目录下的 .txt 后缀文件,如何写呢?

[复制链接]
发表于 2007-8-16 20:15:00 | 显示全部楼层 |阅读模式
我有一个目录 /home/anew/book/
里面有pdf 和 txt 和一些 jpg 我现在只想把里面的所有 txt 文件打一个包,但怎么写呢?
看了半天,也只看到有个 --exclude 参数~ 唉....
发表于 2007-8-16 20:34:36 | 显示全部楼层
find /home/anew/book/ -name *.txt -exec  tar -jcvf book.tar.bz2 {} \;

先找到/home/anew/book/目录下所以的txt文件,然后打包
回复 支持 反对

使用道具 举报

发表于 2007-8-16 21:05:09 | 显示全部楼层
tar -zcf txtfiles.tar.gz *.txt  
试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-8-16 21:18:48 | 显示全部楼层
多谢~ 我去试试
回复 支持 反对

使用道具 举报

发表于 2007-8-16 22:02:47 | 显示全部楼层
Post by gregorian
find /home/anew/book/ -name *.txt -exec  tar -jcvf book.tar.bz2 {} \;

先找到/home/anew/book/目录下所以的txt文件,然后打包

Please modify the following:
find /home/anew/book/ -name "*.txt" -exec  tar -jcvf book.tar.bz2 {} \;
回复 支持 反对

使用道具 举报

发表于 2007-8-17 16:59:28 | 显示全部楼层
这个好像不行!
只能tar到最后一个文档,不知道为什么?
回复 支持 反对

使用道具 举报

发表于 2007-8-17 22:14:04 | 显示全部楼层
Post by jellychen
这个好像不行!
只能tar到最后一个文档,不知道为什么?

使用find是不行的
find -exec cmd
会对找到的每一项执行一次cmd
每次只会tar一个文件,后面生成的tar包将前面的tar包覆盖
tar -zcf txtfiles.tar.gz *.txt 是正解
回复 支持 反对

使用道具 举报

发表于 2007-8-18 09:35:40 | 显示全部楼层
以上两种方法似乎都是不可行的,可以试试这样
  1. tar zcf xx.tar.gz $(find . -name '*.txt')
复制代码

其实用 cpio 更适合这种场合,比如
  1. find -name '*.txt' | cpio -o | gzip -9 > ../xx.cpio.gz
复制代码


以上两个命令都要求在目标目录下执行
回复 支持 反对

使用道具 举报

发表于 2007-8-25 14:54:29 | 显示全部楼层
把tar命令中的c换成a或u(我记不清楚是哪一个)试试,就是让它update,而不是create,另外去掉压缩命令(z或j),最后再压缩。
回复 支持 反对

使用道具 举报

发表于 2007-8-25 20:18:03 | 显示全部楼层
另一个方法是:
find -name '*.txt' | tar -czvf all_txt.tar.gz -T -
回复 支持 反对

使用道具 举报

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

本版积分规则

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