如何将每个文件夹的第一张图片设置为其文件夹图标?

如果文件夹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下载

如何使用

  1. 将脚本复制到空文件中,将其另存为change_icon.py
  2. 在脚本的头部,如果您愿意,可以编辑要用作有效图标图像的扩展名列表。
  3. 以目标目录作为参数运行它:

     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下载

使用

  1. 如果目前还不存在,则创建目录

     ~/.local/share/nautilus/scripts 
  2. 将脚本复制到一个空文件中,将其保存在~/.local/share/nautilus/scripts作为set_foldericons (无扩展名!),并使其可执行

  3. 退出并重新登录,它的工作原理。

笔记

  • 这将更改右键单击文件夹所有文件夹的图标,而不是文件夹本身。
  • 由于使用了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" ])