
我有一個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)。
請注意,您最終不會得到“壓縮目錄”,而是得到“壓縮存檔”,這些東西是不可互換的,因為存檔本身就是文件,而目錄只是文件索引節點數據報。