要压缩文件我使用:
zip -r 1.zip 1.graffle
这按预期工作。但是我如何修改 zip 以压缩当前文件夹中的每个文档,其中每个 zip 文件都是 1:1 映射。换句话说,所有文件都不会添加到单个 zip 文件中。
是否可以修改以下命令来实现这一点?“:
zip -r files.zip .
答案1
您可以zip
为每个文件调用一次:
for f in *.graffle; do zip -r "${f%%.*}.zip" "$f"; done
这将遍历所有.graffle
文件并调用zip
每个文件。存档名称将根据文件名减去扩展名来设置,.graffle
扩展名可通过以下方式删除字符串操作。
如果您想要压缩多个扩展名的文件,只需将它们添加到开头即可,例如for f in *.graffle *.jpg
等等。
请注意,这可能有点慢,因为它一次只能处理一个文件。如果你有GNUparallel
(您可以通过以下方式安装自制使用brew install parallel
):
parallel 'zip -r {.}.zip {}' ::: *.graffle
这将使用多个核心并行运行所有 ZIP 命令,因此如果您有大量文件,它将更快。此处,{.}
负责从输入文件名中删除扩展名,并将{}
其替换为文件名本身。
答案2
如果您位于包含文件的同一目录中,则可以执行:
$ for f in $(ls -1); do zip -r $f.zip $f; done;
或者在另一个目录中:
for f in $(ls -1 /path/to/files); do zip -r $f.zip $f; done;