2016-04-11 16 views
0

特定のディレクトリ内の100個のディレクトリをtarファイルにtarしようとしていますが、これらのディレクトリを100個以上ファイルに追加したくありません。たとえば、ディレクトリの現在の構造はそうTar 100現在のディレクトリ内のディレクトリ

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

のようなものであるこれらの各ディレクトリには、その中のファイルの数が異なる、と私は、これらが同様タールに含まれるようにしたいと思います。私がしたいのは、パスの異なる../00000010/..の部分を持つtar 100ディレクトリです。最後に、それは次のような構造で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部分を考えてみましょう。彼/彼女のディレクトリの下にある患者のファイルはすべて、タールに含める必要があります。ファイルには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

あなただけの最初の100のdirsにタールたいですか? – MaxU

+0

その場所に100 *ユニーク*パスのコンポーネントが必要ですか?または、同じ場所に*同じ*パスコンポーネントがあるファイルを最大100個ですか?あなたは100以上のものがあれば*どの* 100エントリーを気にしますか?これらのディレクトリの中には、「001」のコンポーネントがあり、「004」のコンポーネントがあるものがありますか? –

+0

申し訳ありませんが、私はこれを今修正しました。 –

答えて

0

私が正しくあなたの質問を理解している場合、あなたはこのようにそれを行うことができます。

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

は、患者ディレクトリのリストを作成します:100のチャンクに

find -maxdepth 1 . -type d > dirs 

スプリット:

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のディレクトリ

関連する問題