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