現在のディレクトリの下に、2つのサブディレクトリがあります。
dir_1/
- file1.png
- file2.png
...
- fileN.png
dir_2/
- fileA.txt
- ...
- fileZ.txt
2つのディレクトリをtarで圧縮すると、次のようになります。
tar -cvzf result.tar.gz dir_1/ dir_2/
result.tar.gzを取得しましたが、ディレクトリ構造は維持されています。 result.tar.gzを抽出すると、dir_1
&dir_2
再び。
ディレクトリ構造が残らないようにtar圧縮するにはどうすればよいですか。つまり、tar.gzファイルを抽出すると、ファイルのみが取得されます。
result/
file1.png
...
fileN.png
fileA.txt
...
fileZ.txt
-C
オプションでこれができると思います。
Tarのmanページから:
-C directory, --cd directory, --directory directory
In c and r mode, this changes the directory before adding the following files.
In x mode, change directories after opening the archive but before extracting
entries from the archive.
つまり、実行できるはずです
tar cvzf result.tar.gz -C /path/to/dir1/ . -C /path/to/dir2/ .
あなたが望むものを達成するために。
GNU tarを使用すると、--transform
オプションを使用して、ファイルをアーカイブに追加またはアーカイブから抽出するときにファイル名を書き換えることができます。BSDtarまたはpaxでは、オプション-s
も同じことを行います。
先頭のディレクトリコンポーネントを削除するには(dir_1/subdir/somefile
がsubdir/somefile
として格納されるようにするため):
tar -czf result.tar.gz --transform '!^[^/]*/!!' dir_1 dir_2
すべてのディレクトリコンポーネントを削除するには(dir_1/subdir/somefile
がsomefile
として格納されるように):
tar -czf result.tar.gz --transform '!^.*/!!' dir_1 dir_2