我试图将某个目录中的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
这只是一个例子,患者目录不会以这种方式编号。
答案 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.gz
,01.tar.gz
,...的档案,每个档案都包含100个目录