更改多个文件夹的文件夹图标,音乐专辑

更改多个文件夹的文件夹图标,音乐专辑

要更改文件夹图标,只需右键单击文件夹,选择特性,点击文件夹图标,导航至选择文件夹图标,选择它就完成了!

但如果您必须对 100 个文件夹执行此操作,那就麻烦了。我想要一种更简便的方法来实现相同的目的。比如一个可以自动选择图像屏幕或任何其他内容的快捷方式,让操作变得轻松无忧。

每个文件夹内都有一个名为“album art.jpeg”或“cover art.jpg”或类似名称的图像。

答案1

有两种方法可以实现你想要的。第一种方法只是一条捷径。

您需要做的就是单击文件夹,然后单击Ctrl+ I,这将带您进入属性屏幕。跳过您描述的操作中的 2 个步骤。对于某些文件夹来说,这是合乎逻辑的,但如果您谈论的是 100 个文件夹,那么我建议您采用第二种方法


第二种方法有点复杂。它在 nautilus(你的文件应用程序)中添加了一个右键单击选项设置文件夹图标单击即可访问所有当前目录。它将选择文件夹中找到的第一个图像作为文件夹图标。

该脚本由雅各布·弗莱姆最初发布于这里

打开 gedit 文本编辑器,并将脚本粘贴到空白的 gedit 页面中。

#!/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))
                  ])
  • 保存时选择此路径保存新创建的文件,/home/sundar/.local/share/nautilus/scripts
  • 保留文件名,set_foldericon不带扩展名
  • 现在打开你的文件应用程序(nautilus)并转到/home/sundar/.local/share/nautilus/scripts
  • 您应该看到一个名为的文件set_foldericon
  • 现在右键单击该文件,选择特性然后选择权限并点击允许作为程序执行文件
  • 现在注销并重新登录
  • 现在转到存储音乐专辑的文件夹
  • 右键单击文件夹,您应该看到第二个选项脚本选择名为设置文件夹图标
  • 按以下方式重新加载F5
  • 你的专辑现在应该有封面艺术了

带封面图片的专辑截图

答案2

对于单个目录

设置图标文件或目录使用以下命令

gvfs-set-attribute -t string <PATH> metadata::custom-icon <IMAGE-URL>

其中<PATH>是文件或目录的路径,<IMAGE-URI>是用作图标的图像文件的 URI。要使用本地图像文件,请使用方案file:,例如file:///home/sundar/my-icon.png

对于具有多个目录相同的图标

现在将其应用到多种的文件或目录您可以使用循环命令多次运行上述程序:

for p in <PATHS...>; do
  gvfs-set-attribute -t string "$p" metadata::custom-icon <IMAGE-URL>
done

因为每次要分配一些图标时输入整个命令有点麻烦,所以您可以创建一个 shell 脚本并将其保存到文件中,例如~/.local/bin/set-custom-icon.sh

#!/bin/sh
set -eu
case "$1" in
  *://*) icon="$1";;
  /*) icon="file://$1";;
  *) icon="file://$(readlink -e -- "$1")";;
esac
shift
for p; do
  gvfs-set-attribute -t string "$p" metadata::custom-icon "$icon"
done

设置文件的执行权限

chmod +x ~/.local/bin/set-custom-icon.sh

现在你可以像这样使用脚本:

~/.local/bin/set-custom-icon.sh <IMAGE> <PATHS...>

对于具有不同内容的多个目录,自动地选定的图标

我们可以扩展这个命令来为每个目录选择不同的图标文件,因为两者之间存在一个简单的模式。

for p in <PATHS...>; do
  icon="$(find "$p" -mindepth 1 -maxdepth 1 \( -iname 'album*' -o -iname 'cover*' \) -a \( -iname '*.jp[eg]' -o -iname '*.jpeg' -o -iname '*.png' \) -type f -print -quit)"
  [ -z "$icon" ] || gvfs-set-attribute -t string "$p" metadata::custom-icon "file://$(readlink -e -- "$icon")"
done

对于每个路径,如果存在$p,它将直接在下方找到一个常规文件,$p其名称以album或开头,以、、 或cover结尾(不区分大小写)。如果存在多个与此模式匹配的文件,则选择任意一个。.jpg.jpe.jpeg.png

如果这样的文件存在,则将其设置为目录的图标$p

对于具有不同内容的多个目录,手动选定的图标

我们可以使用一个脚本来实现这一点,该脚本打开一个文件对话框,反复询问图标位置,而无需进一步的用户交互:

for p in <PATHS...>; do
  icon="$(zenity --file-selection --title="Select icon for $p" --file-filter='Supported images | *.jp[eg] *.jpeg *.png *.gif *.svg *.xpm' --file-filter='All files | *')" || break
  gvfs-set-attribute -t string "$p" metadata::custom-icon "$icon"
done

(需要zenity软件包)

答案3

有一款名为 CoverThumbnailer 的应用程序可以满足楼主的需求。任何名为“封面”或“文件夹”的 jpg 或 png 都将被选为缩略图。适用于任何文件夹,而不仅仅是音乐

sudo add-apt-repository ppa:flozz/flozz
sudo apt-get update
sudo apt-get install cover-thumbnailer

相关内容