當前位置: 首頁>>技術教程>>正文


如何將每個文件夾的第一張圖片設置為其文件夾圖標?

, , , ,

問題描述

如果文件夾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))
                  ])

Download from Pastebin

如何使用

  1. 將腳本複製到一個空文件中,保存為change_icon.py

  2. 在腳本的頭部,根據需要編輯要用作有效圖標圖像的擴展名列表。

  3. 使用目標目錄作為參數運行它:

    \n

    python3 /path/to/change_icon.py <targeted_directory>\n

而已!

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))
                  ])

Download from Pastebin

使用

  1. 創建(如果尚不存在)目錄

    \n

    ~/.local/share/nautilus/scripts\n
  2. 將腳本複製到一個空文件中,將其作為 set_foldericons(無擴展名!)保存在 ~/.local/share/nautilus/scripts 中,並使其可執行。

  3. 注銷並重新登錄,它可以工作。

說明

  • 這將更改右鍵單擊文件夾中所有文件夾的圖標,而不是文件夾本身的圖標。

  • 由於使用了 os.path.realpath(),因此如果目標文件夾是鏈接,這也適用。


EDIT

遞歸地撤消(重置)目錄中的自定義圖標

如果出於某種原因您想將文件夾中的圖標重置為默認圖標,請使用以下腳本。簡單地:

  • 將其複製到一個空文件中,將其保存為 reset_icons.py

  • 通過以下命令運行它:

    \n

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

劇本

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

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/13029.html,未經允許,請勿轉載。