macOS批量压缩主目录下多个子目录并打包成单独子目录压缩包 - 技术宅银魂 - 科技改变生活 - 万事屋

macOS批量压缩主目录下多个子目录并打包成单独子目录压缩包

标题不知道该怎么写简洁明了,吃了文化不高的亏。

事情起因是托尼老湿电脑里发现了蠢沫沫写真,一百多套,这货死不承认自己是lsp,说是给万事屋增加素材。

既然如此,那就拿来分享吧,不要钱的事我最乐意干了。

不过这货下载的100多套每个目录下都有不必要的引流文件,解压缩批量删除后,犯难了。怎么一次性打包所有单独文件夹作为单独压缩包?

高胖子教了我一手,都不需要第三方软件,macOS自己就可以操作,不过需要用到“终端”

把文件夹,也就是子目录,拖入终端,前面输入cd

cd /path/to/your/directory

执行命令:

for i in */; do zip -r "${i%/}.zip" "$i"; done

这个命令的解释:

  • for i in */; 循环遍历当前目录下的所有子目录。
  • dodone 之间的命令会对每个子目录执行。
  • zip -r "${i%/}.zip" "$i" 使用 zip 命令创建每个子目录的压缩包:
    • -r 选项表示递归压缩子目录及其内容。
    • "${i%/}.zip" 生成压缩包的文件名,即子目录名加上 .zip 后缀。${i%/} 用于去掉子目录名末尾的斜杠。
    • "$i" 表示要压缩的子目录路径。

命令执行完成后,每个子目录都会被压缩成一个独立的 ZIP 文件,与子目录同名。

例如,如果你有以下目录结构:

main_directory/
├── subfolder1/
│   ├── file1.txt
│   └── file2.txt
├── subfolder2/
│   ├── file3.txt
│   └── file4.txt
└── subfolder3/
    ├── file5.txt
    └── file6.txt
 

执行上述命令后,你会得到:

main_directory/
├── subfolder1/
│   ├── file1.txt
│   └── file2.txt
├── subfolder1.zip
├── subfolder2/
│   ├── file3.txt
│   └── file4.txt
├── subfolder2.zip
├── subfolder3/
│   ├── file5.txt
│   └── file6.txt
└── subfolder3.zip

每个子目录都有一个对应的 ZIP 压缩包。

不过蠢沫沫写真每套子目录都是写真集名字,并不能批量用一个名字,那就单独按照每个子目录的名称作为压缩包名称就完事了

for i in */; do zip -r "$i.zip" "$i"; done

这个命令的解释:

  • for i in */; 循环遍历当前目录下的所有子目录。
  • dodone 之间的命令会对每个子目录执行。
  • zip -r "$i.zip" "$i" 使用 zip 命令创建每个子目录的压缩包:
    • -r 选项表示递归压缩子目录及其内容。
    • "$i.zip" 生成压缩包的文件名,即子目录名加上 .zip 后缀。
    • "$i" 表示要压缩的子目录路径。

执行这个命令后,每个子目录都会被压缩成一个与子目录同名的 ZIP 文件。

例如,如果你有以下目录结构:

main_directory/
├── subfolder1/
│   ├── file1.txt
│   └── file2.txt
├── subfolder2/
│   ├── file3.txt
│   └── file4.txt
└── subfolder3/
    ├── file5.txt
    └── file6.txt

执行修改后的命令,你会得到:

main_directory/
├── subfolder1/
│   ├── file1.txt
│   └── file2.txt
├── subfolder1.zip
├── subfolder2/
│   ├── file3.txt
│   └── file4.txt
├── subfolder2.zip
├── subfolder3/
│   ├── file5.txt
│   └── file6.txt
└── subfolder3.zip

每个子目录都有一个与之同名的 ZIP 压缩包。

    没有回复内容

万事屋新帖