tar圧縮にはディレクトリ構造はありません。

tar圧縮にはディレクトリ構造はありません。

現在のディレクトリの下には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/ 

私は持っています結果.tar.gzただし、ディレクトリ構造は維持されます。抽出する時を意味します。結果.tar.gzdir_1、私は&を取得しますdir_2

ディレクトリ構造が保存されないようにtarを圧縮する方法、つまりtar.gzファイルを抽出すると、ファイルだけがインポートされます。

result/
   file1.png 
   ... 
   fileN.png 
   fileA.txt
   ...
   fileZ.txt

答え1

そのオプションを使えばそうできると思います-C

tarのマニュアルページから:

-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/ .

あなたが望むことを達成しなさい。

答え2

--transformGNU tarを使用すると、アーカイブにファイルを追加したり、アーカイブからファイルを抽出したりするときにファイル名を書き換えるオプションがあります。 BSD tarまたは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

関連情報