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


19

如果文件夹A,B,C ..... Z中有图片,我如何自动将每个这些文件夹中的第一张图片设置为其文件夹图标?有没有像脚本之类的方法?

Answers:


28

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 <targeted_directory>

而已!

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/scriptsset_foldericons(无扩展名!),然后使其可执行

  3. 注销并重新登录,即可正常工作。

笔记

  • 这将更改右键单击的文件夹所有文件夹的图标,而不是文件夹本身的图标。
  • 使用以来os.path.realpath(),如果目标文件夹是链接,这也将起作用。

编辑

递归撤消(重置)目录内的自定义图标

如果出于某种原因想要将文件夹中的图标重置为其默认图标,请使用以下脚本。只是:

  • 将其复制到一个空文件中,另存为 reset_icons.py
  • 通过以下命令运行它:

    python3 /path/to/reset_icons.py <target_directory>

剧本

#!/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"
            ])

我发现我必须输入完整路径,例如“ / home / user / folderName”
JulianLai

如果他们将此功能添加到Nautilus,它将是一个更好的文件管理器。
朱莉安·莱'16


评论不作进一步讨论;此对话已转移至聊天

我可以使用@JacobVlijm而不是文件夹中的第一张图像来选择唯一的文件,例如.folder.png在每个文件夹中。这对于包含多个图像的目录确实很有帮助。我一直在使用这个脚本,这就是一个进步,我很乐意在这上面看到 askubuntu.com/questions/900785/...
Sumeet德希穆克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.