tar 命令打包 排除某个或多个子目录 | AWK命令
2011年3月12日星期六 | | |下午遇到一个小问题:文件目录结构如下
/dir0-
-/dir1 <---该文件很大,欲排除
-/dir2 <---该文件很大,欲排除
-/dir3 <---目标目录之一
-index.php <---目标文件之一
.............以下省略N个子目录和子文件.............
目录下很多子目录,而我需要打包。目标是 /wwwroot 下所有子文件+/dir3 ,于是那些多余的子目录就让我头疼,
怎样在不影响文件结构的情况下打包呢,搜索网上,很多人用下面这个方法:
tar cvzf \home\all.tar.gz dir0 --exclude dir1 --exclude dir2
复制代码
但是并不好,要是排除的部分是多出,要是子目录过多,语句该要写多久啊,后来又发现网上说可以直接使用排除参数X
新建文件excludefiles在当前目录中,内容为
cat excludefiles
dir1
dir2
tar -cvzf \home\all.tar.gz -X excludefile dir1
复制代码
注意:
tar命令里面的目标文件是绝对路径格式,excludefile里面就也必须是绝对路径;
tar命令里面的目标文件是相对路径格式,excludefile里面就也必须是相对路径;
后来 搜索找到了自力博客的一样问题的文章 说可以用 AWK 于是去搜索了一下它:Awk学习笔记 发现它提供的语句可以精简,可以这样写:
ls -l | awk '\^-\ {print $8}' | xargs tar cvfz \home\dir0.tar.gz
复制代码
这个语句很好理解:
ls -l 列出所有文件和目录;
awk '\^-\ {print $8}' 正则只保留文件行,获得第八列的所有文件名;
xargs tar 把上一步得到的名称传参给tar命令。
一切OK,轻松完成打包喽!
欢迎转载,转载请注明:
本文来自: 捷飞网络论坛(Bbs.IDC1.TK)
详细出处参考:http://bbs.superrichtech.com/thread-461-1-1.html