我找到了关于如何在子文件夹中压缩所有文件夹的解决方案。
for i in */*; do zip -r "${i%/}.zip" "$i"; done
问题是我想通过以下方式命名.zip文件夹:parentFolder_zippedFolder.zip
,但是如果可能的话,我想保持上面显示的代码结构。我希望它看起来像
for i in */*; do zip -r "parentFolderName"" + ${i%/}.zip" "$i"; done
如果可能的话,但我找不到在bash脚本中执行此操作的方法。
给定这样的文件夹结构:
./parent
./parent/child1
./parent/child1/data1
./parent/child2
./parent/child2/data2
运行此命令:for i in */*; do zip -r "${i/\//_}.zip" "$i"; done
将产生以下文件:
./parent_child1.zip
./parent_child2.zip
内容与问题中的命令相同,并带有您要求的名称。
请注意,与您的命令相比,zip文件是在上一级创建的。您的命令在parent
目录内创建zip文件,我的命令在父目录旁创建它们。
${i/\//_}
是bash
将/
字符内部变量i
中的_
字符替换为字符的替换。由于/
角色是特殊的bash
,我们必须逃避它,给予\/
。如果我们要替换字母t
,替换为${i/t/_}
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句