说明
打包某个文件夹下,某些文件类型、某些文件、或某个路径下的所有文件。
通过find+tar,将查找到的文件对应打包。
cd /path/to
find test/ -type -f \( -iname "*.class" -o -iname "test.preperties" -o -path "test/a/b/*" \) -print0 | tar --null -cvf test.tar --files-from -
find解释
- -type f 表示只查找文件,不包括目录
- ( ) 内为查找条件,其中因()在shell有特殊含义,用\修饰。
- -iname 表示不区分大小写名称
- -o表示逻辑或
- -print0为了确保文件名之间以null字符分割
tar解释
- –null表示期望文件名之间以null字符分割
- -cvf 表示创建新的tar文件、详细模式(显示正在打入包的文件名)、指定输出文件名
- –files-from - 表示打包从标准输入读取要打包的文件列表(from和后面的-中间有空格),即从前面find查到的文件列表中读取
备注
- 该命令需要先cd到对应目录,最后的tar包中,文件目录层级从 test开始
test/a/b/1.txt
test/a.class
test/a/a.class
test/123/312/test.preperties
- 可以通过-o增加多个文件类型、文件、路径,但这样就会导致这个命令会变得很长很长…o(╯□╰)o