![将文件夹内的所有子文件夹压缩到单独的 zip 文件](https://linux22.com/image/132548/%E5%B0%86%E6%96%87%E4%BB%B6%E5%A4%B9%E5%86%85%E7%9A%84%E6%89%80%E6%9C%89%E5%AD%90%E6%96%87%E4%BB%B6%E5%A4%B9%E5%8E%8B%E7%BC%A9%E5%88%B0%E5%8D%95%E7%8B%AC%E7%9A%84%20zip%20%E6%96%87%E4%BB%B6.png)
我在一个大文件夹下有大约 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