Tar 当前目录中有 100 个目录

Tar 100 Directories within Current Directory

我正在尝试将某个目录中的 tar 100 个目录添加到一个 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 部分视为代表 "patient" 的目录。 his/her 目录下的所有患者文件都应包含在 tar 中。文件中应该有 100 个不同的患者 tarred,所以如果第一个患者是 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

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

如果我理解正确你的问题,你可以这样做:

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

创建患者目录列表:

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 个目录