在 macOS 上通过命令行批量更改文件夹图标

上一篇文章中,我介绍了如何通过图形界面手动更改文件夹图标。但如果你有几十个文件夹需要设置,一个个手动操作就太痛苦了。

本文将介绍如何通过命令行工具,一键批量设置文件夹图标

准备工作

安装 Homebrew

如果你的 Mac 还没有安装 Homebrew,打开「终端」应用,粘贴以下命令:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

按照提示完成安装即可。

安装 fileicon

fileicon 是一个专门用来设置文件/文件夹图标的命令行工具。安装非常简单:

brew install fileicon

等待安装完成,输入 fileicon --help 验证是否安装成功。

基本用法

设置图标

fileicon set 文件夹路径 图片路径

示例:

fileicon set ~/Documents/我的项目 ~/Pictures/logo.png

这条命令会把 logo.png 设置为「我的项目」文件夹的图标。

移除图标(恢复默认)

fileicon rm 文件夹路径

查看当前图标

fileicon test 文件夹路径

批量设置图标

假设你有这样的文件结构:

~/我的文件夹/
├── pics/          # 存放图标图片
│   ├── 项目A.png
│   ├── 项目B.png
│   └── 项目C.png
└── projects/      # 需要设置图标的文件夹
    ├── 项目A/
    ├── 项目B/
    └── 项目C/

图片名和文件夹名完全一致时,可以用以下脚本批量设置:

cd ~/我的文件夹

for folder in projects/*/; do
    name=$(basename "$folder")
    # 尝试匹配 png、jpg、jpeg 格式
    for ext in png jpg jpeg; do
        if [ -f "pics/${name}.${ext}" ]; then
            fileicon set "$folder" "pics/${name}.${ext}"
            echo "✓ 已设置: $name"
            break
        fi
    done
done

将以上代码保存为 set_icons.sh,然后运行:

chmod +x set_icons.sh
./set_icons.sh

进阶:处理非正方形图片

文件夹图标是正方形的。如果你的图片是 16:9 的横图,直接设置会导致图标变形。

安装 ImageMagick

brew install imagemagick

裁剪图片为正方形

从中心裁剪:

magick 原图.png -gravity center -crop 1080x1080+0+0 +repage 正方形.png

从左侧裁剪(保留左半边):

magick 原图.png -gravity West -crop 1080x1080+0+0 +repage 正方形.png

批量裁剪 + 设置图标

cd ~/我的文件夹
mkdir -p pics_square

# 批量裁剪
for img in pics/*; do
    name=$(basename "$img")
    magick "$img" -gravity center -crop 1080x1080+0+0 +repage "pics_square/$name"
done

# 批量设置
for folder in projects/*/; do
    name=$(basename "$folder")
    for ext in png jpg jpeg; do
        if [ -f "pics_square/${name}.${ext}" ]; then
            fileicon set "$folder" "pics_square/${name}.${ext}"
            break
        fi
    done
done

# 清理临时文件
rm -rf pics_square

常见问题

Q: 设置后图标没变化?

打开 Finder,按 Cmd + Shift + . 显示隐藏文件,检查文件夹内是否有 Icon? 文件。如果有,说明设置成功,可能需要刷新 Finder:

killall Finder

Q: 图片名和文件夹名不完全一致怎么办?

可以手动建立映射关系,逐个设置:

fileicon set "projects/文件夹A" "pics/图片1.png"
fileicon set "projects/文件夹B" "pics/图片2.png"

Q: 如何批量恢复默认图标?

for folder in projects/*/; do
    fileicon rm "$folder"
done

小结

操作 命令
设置图标 fileicon set 文件夹 图片
移除图标 fileicon rm 文件夹
裁剪图片 magick 原图 -gravity center -crop 1080x1080+0+0 +repage 新图

通过命令行设置文件夹图标,不仅效率高,还可以写成脚本反复使用。如果你有大量文件夹需要个性化,这个方法绝对值得一试。