如何找到文件夹的所有子文件夹并分别压缩它们?
文件夹结构
./folder
-subfolder_1
-subfolder_2
-subfolder_3
预期结果:
./folder
-subfolder_1.zip
-subfolder_2.zip
-subfolder_3.zip
我尝试了以下方法:
for i in .; do zip -r $i.zip $i; done;
导致一个..压缩包含所有子文件夹的文件
答案1
实际上,只有当前目录仅包含子目录时,m1k3y02() 提供的解决方案for i in *; do zip -r "$i.zip" $i; done
才会起作用。
查找和压缩子目录的更好方法:
for dir in ./* ;do
if [[ -d $dir ]];then
zip -r ${dir}.zip $dir
fi
done
或者
find . -type d -maxdepth 1 -exec zip -r {}.zip {} \;
答案2
以下是对其中一个的几个调整zuberruber 的回答:
find . -mindepth 1 -maxdepth 1 -type d -exec zip -r --move --test {}.zip {} \;
它添加了一个-mindepth
测试以避免压缩当前目录,并将全局深度测试放在测试之前-type
以避免警告。此外,我还添加了--move --test
zip 命令,以便在成功压缩后删除解压的文件。
答案3
解决方案如下...
for i in *; do zip -r "$i.zip" $i; done;