Mac 压缩排除 .Ds_Store

262 阅读1分钟

想要将文件夹压缩给别人,别人打开一看里面有 .Ds_Store 文件,这有点不好。
那么如何在 mac 压缩文件夹时去掉 .Ds_Store 文件呢?

使用 zip 命令压缩

使用快捷指令运行 Shell 脚本,在文件夹右键菜单中添加快捷指令操作,这样在右键文件夹时就能点击菜单进行压缩。
打开快捷指令,添加一个快捷指令

image.png

在右边搜索 shell ,将运行 Shell 脚本拖拽到左边,输入 Sell 脚本:

for f in "$@"
do
    # 获取文件夹名称
    folderName=$(basename "$f")
    # 获取父目录路径
    parentDir=$(dirname "$f")
    
    # 显示通知 - 开始压缩
    osascript -e "display notification \"正在压缩 $folderName...\" with title \"文件夹压缩\""
    
    # 切换到父目录
    cd "$parentDir"
    
    # 使用zip压缩,排除.DS_Store文件
    zip -r "${folderName}.zip" "$folderName" -x "*.DS_Store"
    
    # 检查压缩是否成功
    if [ $? -eq 0 ]; then
        # 显示成功通知
        osascript -e "display notification \"已创建: ${folderName}.zip\" with title \"压缩成功\""
    else
        # 显示错误通知
        osascript -e "display notification \"压缩失败,请重试\" with title \"错误\""
    fi
done

这个脚本中使用了 zip 命令进行压缩,使用 -x 命令排除指定名称文件

image.png

点击右边的感叹号图标,勾选作为快速操作使用和访达。
在运行 Shell 脚本中的下方,输入选择输入快捷指令的信息,传入输入内容选择作为参数。
在顶部你可以命名这个快捷指令,例如:压缩

image.png

然后你就能在右键菜单中运行快捷指令进行压缩了

image.png

这种方式有一个缺点,兼容性不够好。
将压缩文件在 windows 用系统自带的解压功能进行解压,是不能解压文件名包含中文的文件的,或者是提示压缩包错误,不能解压,使用第三方解压工具就能解压。这可能是由于编码格式的问题,windows 不使用 utf-8。我换成其它压缩命令进行压缩也没有解决。

使用第三方软件进行压缩

使用第三方软件压缩就能解决兼容问题了。
我使用的是 CleanArchiver ,将要压缩的文件拖拽到软件就能压缩了,勾选 Exclude .Ds_Store 就能排除掉 .Ds_Store 文件。

这是 github 地址,你可以在里面下载软件:Releases · anyakichi/CleanArchiver
或者可以到这个页面下载软件:Download CleanArchiver for Mac | MacUpdate

image.png

最佳方案-使用快捷指令将文件通过应用压缩

这种方案既方便又能提供很好的兼容性。在上面的方案中使用 CleanArchiver 应用压缩,每次都要将文件拖动到 CleanArchiver 应用内,不太方便,可以使用快捷指令运行 shell 命令,让文件通过 CleanArchiver 打开,然后将该快捷指令添加到文件夹菜单。

按照上面的“使用 zip 命令压缩”方案创建快捷指令,shell 命令如下:

for f in "$@"
do
    # 检查文件是否存在
    if [ -e "$f" ]; then
        # 使用 CleanArchiver 打开文件
        open -a "CleanArchiver" "$f"
        
        # 可选:显示通知
        osascript -e "display notification \"正在用 CleanArchiver 打开: $(basename \"$f\")\" with title \"文件处理\""
    else
        osascript -e "display notification \"文件不存在或无法访问\" with title \"错误\""
    fi
done

image.png

点击该快捷指令菜单就能让当前文件通过 CleanArchiver 压缩了 👏 。

image.png