如何将多个文件夹压缩成自己的zip存档?

Vil*_*agg 16 linux bash terminal command-line

所以我想创建一个脚本,使我能够将每个文件夹压缩到自己的zip存档中,而不是压缩成一个大的zip文件.

举个例子,我有一个目录:

+ MyDirectory/
| |
| + Folder_01/
| |
| + Folder_02/
| |
| + Folder_03/
|
Run Code Online (Sandbox Code Playgroud)

当我做下运行的脚本,MyDirectory然后我会这里面的每个文件夹的zip文件MyDirectory:Folder_01.zip,Folder_02.zipFolder_03.zip.我知道一些BASH,但这是我无法弄清楚的.

如何才能做到这一点?

亲切的问候.

Igo*_*bin 42

for i in *
do
[ -d "$i" ] && zip -r "$i.zip" "$i"
done
Run Code Online (Sandbox Code Playgroud)

您遍历所有目录并为每个目录创建zip.

或者更简洁:

for i in */; do zip -r "${i%/}.zip" "$i"; done
Run Code Online (Sandbox Code Playgroud)

(感谢damienfrancois的建议).

  • 你可以避免`[-d"$ i"] &&`部分用'for*in*/` (3认同)
  • @damienfrancois:超级提示!谢谢!! (2认同)

小智 5

这里

for i in */; do tar -czvf "${i%/}.tar.gz" "$i"; done
Run Code Online (Sandbox Code Playgroud)