将文件夹内的所有子文件夹压缩到单独的 zip 文件

将文件夹内的所有子文件夹压缩到单独的 zip 文件

我在一个大文件夹下有大约 200 个文件夹Parent,比如child1-100

-Parent

----child1/contents

----child2/contents

如何更改child 1-100每个 zip 文件夹中命名的所有文件夹,例如child1.zip, child2.zip?我尝试执行此命令for i in */; do zip -r "${i%/}.zip" "$i"; done ,但它给了我child1.zip提取后给出的命令/child1/child1/contents。我只想将 zip 文件解压后child1.zip提供给文件夹。/child1/contents

答案1

如果您希望 zip 文件仅包含contents,而不包含child1/contents,请执行以下操作:

for dir in */; do
    ( cd "$dir" && zip -r ../"${dir%/}".zip . )
done

答案2

for dir in child*; do
    #recursive zip to include folder contents
    zip -r "${dir}.zip" "$dir"
done

相关内容