如何批量壓縮不同的子資料夾?

如何批量壓縮不同的子資料夾?

我有一個all_folders包含 5 個資料夾的資料夾:

./all_folders
./all_folders/folder1
./all_folders/folder2
./all_folders/folder3
./all_folders/folder4
./all_folders/folder5

我可以使用一個命令一次壓縮所有這些資料夾嗎?我想進入all_folders目錄,然後執行命令,以便壓縮該目錄中的各個資料夾。

預期輸出是

當我做

ls 

,那all_folders我應該有 10 個目錄。 5 個未壓縮的和 5 個壓縮的。

答案1

cd進入all_folders,然後運行

for i in folder1 folder2 folder3 folder4 folder5; do tar czf $i.tar.gz $i; done

答案2

有點不清楚你想要實現什麼目標。我正在運行僅應在此處壓縮子目錄的用例。

首先,前往包含目錄集合的目錄,然後:

find -maxdepth 1 -type d | {
    while read dir; do 
        if [ ! "x${dir#*/}" = "x." ]; then
            tar cJf ${dir#*/}.tar.xz ${dir#*/};
        fi;
    done
}

這與zsh.要進行測試,請在 ,echo前面放置一個tar, 來查看命令是否簽出等。

然而,像這樣收集檔案通常是不可取的。通常,您需要壓縮整個集合、對這些檔案所在的磁碟機使用透明壓縮,或使用傳輸壓縮(X-DEFLATE例如使用 HTTP)。

請注意,您最終不會得到“壓縮目錄”,而是得到“壓縮存檔”,這些東西是不可互換的,因為存檔本身就是文件,而目錄只是文件索引節點數據報。

答案3

tar -zcvf archive.tar.gz directory/ 

這將告訴tar 從目錄中的檔案中c(建立)一個存檔(tar 預設是遞歸的),使用z (gzip) 演算法對其進行壓縮,將輸出儲存為名為archive.tar.gz 的af (文件),然後v (詳細地)列出它添加到存檔中的所有文件。

若要將存檔解壓縮並解壓縮到目前目錄中,您可以使用

tar -zxvf archive.tar.gz 

在此輸入影像描述

相關內容