查找:'zip':没有这样的文件或目录

查找:'zip':没有这样的文件或目录

我正在使用 WSL (Ubuntu) 并尝试递归地将文件压缩到一堆子文件夹中。

IE

Main Folder .
  SubFolder 1's files get zipped into a .zip
  SubFolder 2's files get zipped into a .zip
  SubFolder 3's files get zipped into a .zip
  SubFolder 4's files get zipped into a .zip
  SubFolder 5's files get zipped into a .zip

etc.

我导航到主文件夹,然后运行:

find . -type d -maxdepth 1 -execdir zip -r '{}.zip' '{}' \;

这样做后,我收到了一堆垃圾邮件:

查找:'zip':没有这样的文件或目录

我也尝试过完全相同的行,使用exec而不是execdir但得到了相同的结果。有谁能指出问题所在吗?

答案1

该错误意味着您尚未安装该zip命令,请测试command -v zip;空输出表示未安装,请安装sudo apt install zip


分别到zip每个目录的文件排除您需要将-j选项添加到zipcommnad的目录:

find . -mindepth 1 -maxdepth 1 -type d -execdir zip -jr '{}.zip' '{}' \;

请注意,您需要-maxdepth在 before 之前指定选项-type d,还添加了-mindepth 1忽略压缩当前目录的选项;或将两者替换为[! -name . -prune ;将 POSIX 查找限制到特定深度?],所以命令是:

find . ! -name . -prune -type d -execdir zip -jr '{}.zip' '{}' \;

或者你也可以使用 for 循环:

for thing in ./*; do
    [[ -d "${thing}" ]] && zip -jr "${thing}.zip" "${thing}";
done

请注意,由于使用了-j选项,如果有从不同子目录收集到单个 zip 文件中具有相似名称的文件,命令将因相同的文件名而停止压缩。

相关内容