如何创建一个 Automator 服务,当鼠标右键单击文件夹或文件时以 gzip 或 bzip 格式压缩文件?

如何创建一个 Automator 服务,当鼠标右键单击文件夹或文件时以 gzip 或 bzip 格式压缩文件?

是否有人有脚本可以在 Automator 服务上使用,通过单击鼠标右键来压缩一个或多个文件、文件夹或文件夹?这将是“压缩”选项的替代选项,即压缩为 zip。

答案1

选择服务模板并使用如下 shell 脚本:

n=$1
[[ -e $n.tgz ]] && { i=2; n="$1-$i"; }
while [[ -e $n.tgz ]]; do n="${n%-*}-$((i++))"; done
d=${1%/*}
cd -- "$d"
COPYFILE_DISABLE= tar -czf "$n.tgz" -- "${@#"$d/"}"

将 -z 更改为 -j 并将 tgz 更改为 tbz 以使用 bzip2。

该服务通常应以单个文件夹作为输入使用。如果输入是多个文件,则它不会为这些文件创建包含目录。

设置 COPYFILE_DISABLE 会告诉 tar 删除扩展属性和 ACL,而不是使用 AppleDouble 格式:

$ touch a;xattr -w key value a
$ tar -cf a.tar a;tar -tf a.tar
./._a
a
$ COPYFILE_DISABLE= tar -cf a2.tar a;tar -tf a2.tar
a
$

相关内容