如何将每个文件夹的第一张图片设置为其文件夹图标?
如果文件夹A,B,C …… Z中有图片,如何自动将每个文件夹中的第一张图片设置为文件夹图标? 有没有像脚本或别的东西?
1.自动将文件夹图标更改为第一个找到的图像
下面的python脚本会将目录中所有文件夹的图标(递归地)更改为文件夹中第一个找到的有效图像文件。
剧本
#!/usr/bin/env python3 import subprocess import os import sys # --- set the list of valid extensions below (lowercase) # --- use quotes, *don't* include the dot! ext = ["jpg", "jpeg", "png", "gif","icns", "ico"] # --- dr = sys.argv[1] for root, dirs, files in os.walk(dr): for directory in dirs: folder = os.path.join(root, directory) try: first = min(p for p in os.listdir(folder) if p.split(".")[-1].lower() in ext) except ValueError: pass else: subprocess.Popen([ "gvfs-set-attribute", "-t", "string", os.path.abspath(folder), "metadata::custom-icon", "file://"+os.path.abspath(os.path.join(folder, first)) ])
从Pastebin下载
如何使用
- 将脚本复制到空文件中,将其另存为
change_icon.py
- 在脚本的头部,如果您愿意,可以编辑要用作有效图标图像的扩展名列表。
-
以目标目录作为参数运行它:
python3 /path/to/change_icon.py
而已!
2.更先进
…是在nautilus中使其成为右键单击选项:
该脚本略有不同:
#!/usr/bin/env python3 import subprocess import os # --- set the list of valid extensions below (lowercase) # --- use quotes, *don't* include the dot! ext = ["jpg", "jpeg", "png", "gif", "icns", "ico"] # --- # retrieve the path of the targeted folder current = os.getenv("NAUTILUS_SCRIPT_CURRENT_URI").replace("file://", "").replace("%20", " ") dr = os.path.realpath(current) for root, dirs, files in os.walk(dr): for directory in dirs: folder = os.path.join(root, directory) try: first = min(p for p in os.listdir(folder) if p.split(".")[-1].lower() in ext) except ValueError: pass else: subprocess.Popen([ "gvfs-set-attribute", "-t", "string", os.path.abspath(folder), "metadata::custom-icon", "file://"+os.path.abspath(os.path.join(folder, first)) ])
从Pastebin下载
使用
-
如果目前还不存在,则创建目录
~/.local/share/nautilus/scripts
-
将脚本复制到一个空文件中,将其保存在
~/.local/share/nautilus/scripts
作为set_foldericons
(无扩展名!),并使其可执行 。 - 退出并重新登录,它的工作原理。
笔记
- 这将更改右键单击文件夹内所有文件夹的图标,而不是文件夹本身。
- 由于使用了
os.path.realpath()
,如果目标文件夹是链接,这也有效。
编辑
以递归方式撤消(重置)目录中的自定义图标
如果由于某种原因您想将文件夹中的图标重置为其默认图标,请使用下面的脚本。 只是:
- 将其复制到一个空文件中,将其另存为
reset_icons.py
-
通过命令运行它:
python3 /path/to/reset_icons.py
剧本
#!/usr/bin/env python3 import subprocess import os import sys dr = sys.argv[1] for root, dirs, files in os.walk(dr): for directory in dirs: folder = os.path.join(root, directory) subprocess.Popen([ "gvfs-set-attribute", os.path.abspath(folder), "-t", "unset", "metadata::custom-icon" ])