用于将目录添加到许多现有 zip 文件的终端命令

用于将目录添加到许多现有 zip 文件的终端命令

我在终端中使用以下命令(从 @Theophrastus 的答案中找到)来压缩所有具有相同名称的 *.html 和 *.js 文件,同时保留这些配对文件的名称。

如何压缩具有相同名称但不同扩展名的文件?

for Q in *;do H=${Q%%.*};zip "${H}.zip" "$Q";done

我还想在 zip 文件中包含一个名为 images 的文件夹,但不明白上面的命令的作用。

结构是

zipping

|-   images
      bitmap1.jpg
      bitmap2.png

file1.html
file1.js
file2.html
file2.js
file3.html
file3.js
file4.html
file4.js
file5.html
file5.js

完成后,zip 文件应具有与其开头相同的名称,这是 html 和 js 文件共享的名称。

答案1

您不能指定通配符作为命令的 zip 文件参数,zip因为 shell 会将其替换为多个文件名。相反,您可以使用循环来逐个处理多个 zip 文件。

for file in *.zip
do
    zip -ur "$file" images
done

或在一行中

for file in *.zip ; do zip -ur "$file" images ; done

相关内容