首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 其他服务器 >

用tar对某些文件打包,该怎么处理

2012-02-08 
用tar对某些文件打包比如有一个project的文件夹,下面有bin、conf、lib、logs、common文件夹,bin文件夹下有nohu

用tar对某些文件打包
比如有一个project的文件夹,下面有bin、conf、lib、logs、common文件夹,bin文件夹下有nohup.out文件

我的目的是把这个文件夹下conf、common以及踢出bin下nohup.out文件的bin目录进行打包。

想用tar -cvf project.tar `find project | grep -v lib | grep -v logs | grep -v bin/nohup.out`命令
结果还是把所有的文件给打包了
单独执行find project | grep -v lib | grep -v logs | grep -v bin/nohup.out,是可以过滤的

如果用tar -cvf project.tar `find project | grep -e conf | grep -e common`命令,可以将find命令过滤出的文件进行打包。

为什么用grep -e 过滤可以,用grep -v过滤就不行?

[解决办法]
-bash-3.00$ find test | grep -v sh #用find -v命令过滤
test ----------A
test/test.log
test/test.txt
---------------------------
既然你把结果都贴出来 你自己就应该分析一下
你看看A那个地方的test是什么? find之后第一行会显示目录 这个目录当成参数交给tar了 当然会全归档

-v 反检索 只显示不匹配的行 你把某个类型的文件过滤了 但是你并没把第一行显示的目录过滤
 -e PATTERN 把样式做为一个partern 通常用在避免partern用-开始 所以你的-e并没有起到过滤的作用 而是匹配了
 
[解决办法]
再分析你贴的
-bash-3.00$ find test | grep -v sh #用find -v命令过滤
test
test/test.log
test/test.txt
----------------------

↓显示结果test test/test.log test/test.txt交给tar归档 
↓test目录包括 
↓test/test.sh
↓test/test.log
↓test/test1.sh
↓test/test.txt
↓test/testDate.sh

-bash-3.00$ tar -cvf a.tar `find test | grep -v sh` #tar对find过滤的文件进行打包,结果失败
test/
test/test.sh
test/test.log
test/test1.sh
test/test.txt
test/testDate.sh
test/test.log
test/test.txt
------------------------------

打包成功,并非失败

热点排行