すべてのフォルダーの最初の画像をフォルダーアイコンとして設定する方法は?


19

フォルダーA、B、C ..... Zに画像がある場合、これらの各フォルダーの最初の画像をフォルダーアイコンとして自動的に設定するにはどうすればよいですか?スクリプトなどの方法はありますか?

回答:


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/scriptsとして保存し、実行可能にしますset_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に追加すると、より優れたファイルマネージャになります。
JulianLai


コメントは詳細なディスカッション用ではありません。この会話はチャットに移動さました
テルドン

@JacobVlijmフォルダー内の最初の画像の代わりに、たとえば.folder.pngすべてのフォルダー内の一意のファイルを選択するようにできます。これは、複数のイメージがあるディレクトリに非常に役立ちます。私はこのスクリプトを使用してきましたが、それを改善したいと考えています 。askubuntu.com
questions/900785/
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.