更改多个文件夹(电影)的文件夹图标

Sum*_*ukh 3 command-line nautilus directory

如何更改多个文件夹的图标?

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

我一直在这里,但它对我不起作用。因为我的电影不在主分区中,它们在不同的 ext4 分区中,当我尝试将该分区的位置放在该命令中时,它根本不起作用,因为它会自动将/home/sumeet放在该位置的前面我输入的。

第二篇文章中的脚本不起作用!也许我做错了什么。

[编辑 2 详细]

{ while read -r d ; do [ -d "$d" ] && [ -e "$d/folder.png" ] || continue ; gvfs-set-attribute -t string "$d" metadata::custom-icon "file://$d/folder.png" ; done ; } < <(find ~/mnt/c2104e2a-cc8e-4b7b-9bba-a05d316472b4/I -mindepth 1 -maxdepth 1 -type d)
Run Code Online (Sandbox Code Playgroud)

我首先从第一篇文章中运行了这个命令,这给了我一个输出

find: ‘/home/sumeet/mnt/c2104e2a-cc8e-4b7b-9bba-a05d316472b4/I’: No such file or directory
Run Code Online (Sandbox Code Playgroud)

然后我按照原始帖子中的建议将一些文件移动到home/videos/films并运行此命令

{ while read -r d ; do [ -d "$d" ] && [ -e "$d/folder.png" ] || continue ; gvfs-set-attribute -t string "$d" metadata::custom-icon "file://$d/folder.png" ; done ; } < <(find ~/Videos/Films -mindepth 1 -maxdepth 1 -type d)
Run Code Online (Sandbox Code Playgroud)

效果很好,但我无法将我的整个电影收藏移动到主文件夹。

然后我在第二个提到的帖子中尝试了解决方案并运行

python3 /home/sumeet/change_icon.py </mnt/c2104e2a-cc8e-4b7b-9bba-a05d316472b4/I>
Run Code Online (Sandbox Code Playgroud)

并得到这个输出

bash: syntax error near unexpected token `newline'
Run Code Online (Sandbox Code Playgroud)

然后我想,我做错了什么并尝试了这个

python3 /home/sumeet/change_icon.py /mnt/c2104e2a-cc8e-4b7b-9bba-a05d316472b4/I
Run Code Online (Sandbox Code Playgroud)

没有得到任何输出,但它也不起作用。

然后我尝试了第二个脚本 3 或 4 次。出现了右键单击选项,但它不起作用,我已经完成了两个帖子要求的所有操作。我注销,重新登录,我尝试重新启动,-q nautilus

似乎没有工作。

Sum*_*ukh 6

该脚本由Jacob Vlijm编写,最初张贴在这里

#!/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))
                  ])
Run Code Online (Sandbox Code Playgroud)

使用

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

    ~/.local/share/nautilus/scripts
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将脚本复制到一个空文件中,将其另存~/.local/share/nautilus/scriptsset_foldericons(无扩展名!),右键单击并转到文件属性并使其可执行

  3. 注销并重新登录,它可以工作。

如果你想隐藏所有的文件夹图标(这样你就不会意外地认为它们是文件夹).在文件名的开头添加一个,例如folder.png变成.folder.png

万事俱备,只有一个脚本

原作