現在のディレクトリの下には、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.gz、またdir_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
GNU tar では、アーカイブにファイルを追加したり、アーカイブからファイルを抽出したりするときに、ファイル名を書き換えるオプションを使用できます--transform
。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