これが私のファイル構造です。私は現在test2/
ディレクトリにあり、すべてのコマンドはここで実行する必要があります。
test/
|_test2/
publish/
|_subfolder1/
|_f1
|_f2
|_f3
|_subfolder2/
|_f4
|_f5
|_f6
|_f7
以下を行う必要があります。
- サブフォルダ2(同じ名前)のtar.gzを作成する
- サブフォルダ2を削除
- サブフォルダ2.tar.gzを含むサブフォルダ1(同じ名前)のtar.gzを作成します。
- サブフォルダ1を削除
最終的なtar構造は次のようになります
publish/
|_subfolder1.tar.gz
|_subfolder2.tar.gz
現在のパスで各 tar.gz を解凍すると、出力は次のようになります。
publish/
|_subfolder1.tar.gz
|_subfolder1/
|_f1
|_f2
|_f3
|_subfolder2.tar.gz
|_subfolder2/
|_f4
|_f5
|_f6
|_f7
次のようにしてこれを達成できます。
cd ../../publish/subfolder1
tar -zxf subfolder2.tar.gz subfolder2/
rm -rf subfolder2
cd ../
tar -zxf subfolder1.tar.gz subfolder1/
rm -rf subfolder1
cd ../test/test2
私は私のスクリプトがcd
。
tar -zcf ../../publish/subfolder1/subfolder2.tar.gz -C ../../publish/subfolder1/subfolder2/ .
rm -rf ../../publish/subfolder1/subfolder2/
tar -zcf ../../publish/subfolder1.tar.gz -C ../../publish/subfolder1/ .
rm -rf ../../publish/subfolder1/
これによりtarballが作成されますが、ディレクトリは削除されます。開梱すると、以下が表示されます。
publish/
|_subfolder1.tar.gz
|_subfolder2.tar.gz
|_f1
|_f2
|_f3
|_f4
|_f5
|_f6
|_f7
複数のcdコマンドを使用せずにtarball構造内のフォルダパスをどのように保持できますか?
答え1
保管するコンテンツ、現在のディレクトリfoo
に変更します。ディレクトリ自体をアーカイブするには、親ディレクトリをおよび:に変更します。foo
tar
-C /some/dir/foo .
foo
foo
tar
foo
-C /some/dir foo
したがって、コマンドは次のようになります。
tar -zcf ../../publish/subfolder1/subfolder2.tar.gz -C ../../publish/subfolder1 subfolder2
rm -rf ../../publish/subfolder1/subfolder2/
tar -zcf ../../publish/subfolder1.tar.gz -C ../../publish subfolder1
rm -rf ../../publish/subfolder1/