Linux中用tar命令打包如何排除 所有 扩展名为 wdb的文件?

比如有一个文件夹叫 basic,里面有很多文件及子文件夹,很多文件夹中都有 *.wdb文件。因为这些文件都体积很大。我想打包basic文件夹下所有的文件,除了 wdb格式的文件,请问高手帮我写这个命令。用 find的什么的组合命令都可以。

Linux下tar命令exclude选项排除指定文件或目录

先复习一下常规的压缩解压缩使用办法:

压缩:tar zcvf filename.tar.gz folderName 

解压: tar zxvf filename.tar.gz

举例说明:

1、test 文件夹有如下文件

2、打包

3、这样是打包全部文件,假设需要排除jpg文件可以这么弄


这样,就会把jpg后缀的文件都排除了,包括子目录。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2020-03-15
find basic/ ! -type d ! -name *.wdb
这个命令将找到basic目录下的扩展名不是wdb的文件。!表示否定,! -type d不是目录,! -name *.wdb,名字与*.wdb不匹配的。
所以命令可以这样写
for i in `find basic/ ! -type d ! -name *.wdb`;do arg="$arg $i";done
把所有要打包的文件的路径按空格分割保存在变量arg中
你可以echo $arg查看是否正确

然后打包
tar czvf my.tar $arg
如果你要重复使用这个命令的话,记得使用命令unset arg重置变量arg,或者换一个变量追问

*.wdb 要加双引号,
命令无法运行,提示for do done 命令找不到,
arg变量没有。
我还是没搞定啊。

追答

我不知道你是这么运行的,这段代码在我机器上是可以运行的。你用的不是bash?
注意几点,for i in `find basic/ ! -type d ! -name *.wdb`后面一个分号,do arg="$arg $i"后面一个分号。

find basic/ ! -type d ! -name *.wdb用反引号包含,键盘tab键上面那个

本回答被提问者和网友采纳
第2个回答  2012-08-05
find basic ! -name "*.wdb" | xargs tar cvzf a.tar.gz追问

find basic ! -name "*.wdb"
这个命令可以找到我要的文件夹,
有后面命令打包的时候还是会把 *.wdb 文件打包。
怎么办啊。

实际运行还是会打包。
[user@lake PANEL]$ find NORMAL ! -name "*.wdb" | xargs tar cvzf a.tar.gz
NORMAL/

……
NORMAL/PANEL_NORMAL_15.wdb //这个还是被打包了 。

……

相似回答