bash:查找并压缩文件夹的所有子文件夹

m1k*_*y02 4 zip bash recursive

如何找到一个文件夹的所有子文件夹并分别压缩它们?

文件夹结构

./folder  
   -subfolder_1  
   -subfolder_2   
   -subfolder_3 
Run Code Online (Sandbox Code Playgroud)

预期结果:

./folder
   -subfolder_1.zip
   -subfolder_2.zip
   -subfolder_3.zip
Run Code Online (Sandbox Code Playgroud)

我已经尝试过以下方法:

for i in .; do zip -r $i.zip $i; done; 
Run Code Online (Sandbox Code Playgroud)

生成一个包含所有子文件夹的..zip文件

小智 5

实际上,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
Run Code Online (Sandbox Code Playgroud)

或者

find . -type d -maxdepth 1 -exec zip -r {}.zip {} \;
Run Code Online (Sandbox Code Playgroud)

  • 第二种方式,需要“-mindepth 1”选项来排除“.”文件夹。 (2认同)