当前目录中的Tar 100目录

时间:2016-04-11 18:50:47

标签: linux shell tar

我试图将某个目录中的100个目录tar到tar文件,但我不想在文件中添加超过100个这样的目录。例如,目录的当前结构就像这样

.../v0.0/category_name/edf/001/00000010/s01_2012_03_01

每个目录中都有不同数量的文件,我希望这些目录也包含在tar中。我想要它做的是tar 100目录与路径的不同../00000010/..部分。最后,它可能最终创建一个具有以下结构的tar文件:

.../v0.0/category_name/edf/001/00000010/s01_2012_03_01/file.txt
.../v0.0/category_name/edf/001/00000010/s01_2012_03_01/file2.txt
.../v0.0/category_name/edf/001/00000010/s02_2012_03_01/file.txt
.../v0.0/category_name/edf/001/00000015/s01_2012_03_01/file.txt
.../v0.0/category_name/edf/004/00000100/s01_2012_03_01/file.txt

考虑路径的00000010部分代表"患者"的目录。他/她的目录下的所有患者文件都应包含在tar中。应该有100名不同的患者使用该文件,因此,如果第一名患者为00000001且第100名患者为00000100,则结构可能看起来像这样。

.../v0.0/category_name/edf/001/00000001/s01_2012_03_01/file.txt
.../v0.0/category_name/edf/001/00000001/s01_2012_03_01/file2.txt
.../v0.0/category_name/edf/001/00000001/s02_2012_03_01/file.txt
.../v0.0/category_name/edf/001/00000002/s01_2012_03_01/file.txt
.../v0.0/category_name/edf/004/00000003/s01_2012_03_01/file.txt
...
.../v0.0/category_name/edf/001/00000100/s01_2012_03_01/file.txt
.../v0.0/category_name/edf/004/00000100/s02_2012_03_01/file.txt

这只是一个例子,患者目录不会以这种方式编号。

2 个答案:

答案 0 :(得分:0)

if i understood your question correctly, you can do it this way:

find . -type d | head -100 | tar czvf dirs.tgz -T -

答案 1 :(得分:0)

创建患者目录列表:

find -maxdepth 1 . -type d > dirs

分成100块:

split -l 100 -d dirs chunk.

每个块中的归档目录:

for f in chunk.* ; do tar -czvf ${f##chunk.}.tar.gz `cat $f` ; done

您最终会得到名为00.tar.gz01.tar.gz,...的档案,每个档案都包含100个目录