Как поменять иконки нескольких файлов из терминала?

Я хотел бы изменить иконки нескольких файлов из терминала.
Не значки запуска, а значки по умолчанию для типов файлов, основанные на окончаниях файлов.
Как решить эту задачу?

1 ответ

Решение

"эмблемы" хранятся в виде двоичных файлов в каталоге ~/.local/share/gvfs-metadata,

Так что вам нужен gvfs-bin Установите gvfs-bin для того, чтобы иметь возможность извлечь их и сохранить их. О, и есть один файл на раздел / том / каталог / файл (что еще хуже).

Чтобы получить информацию о эмблеме, вы можете использовать:

gvfs-info -a metadata::emblems {filename|folder}

Чтобы установить {значок} для {имя_файла} или {папки}, вы используете:

gvfs-set-attribute -t stringv {filename|folder} metadata::emblems {icon}

Пример:

Я создал папки 1, 2, 3, 4 в ~/Music.

im1

Команды внутри терминала изображения:

gvfs-set-attribute 1 metadata::custom-icon file:///usr/share/pixmaps/gnome-log.png

gvfs-set-attribute 2 metadata::custom-icon file:///usr/share/pixmaps/gnome-spider.png

Измените 1 и 2 на существующий видеофайл или любой другой фактический файл, и он должен работать так же.

и F5 обновляет нижнюю панель.

Как вы можете догадаться из каталогов 3 и 4, вам нужно будет делать это для каждого файла, для которого вы хотите.

Вот скрипт, который проходит по каталогу и устанавливает PNG, который находится в папке как эмблему папок (в основном это имитирует метод использования Windows folder.png как эмблема каталога над ним).

#! / USR / бен / питон

импорт ОС
из os.path импорт присоединиться

cwdir = str(os.popen('pwd').readline()).replace('\n','')

для root, dirs, файлы в os.walk(cwdir):
    для имени в файлах:
        if name.lower().find('.png')!= -1:
            os.system('gvfs-set-attribute "'+root+'" метаданные::custom-icon "'+name+'"')

Возможно, вы сможете изменить это в свою собственную версию, которая включает в себя файлы.

использование скрипта на свой страх и риск

Другие вопросы по тегам