tar 壓縮沒有目錄結構

tar 壓縮沒有目錄結構

在我目前的目錄下,我有兩個子目錄:

dir_1/
   - file1.png
   - file2.png
   ...
   - fileN.png

dir_2/
   - fileA.txt
   - ...
   - fileZ.txt

當我透過以下方式 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

相關內容