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

9

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

karthick87
источник
Вы имеете в виду, что вы можете через правый клик -> Свойства в файловом менеджере?
dv3500ea
Это значки запуска или значки по умолчанию для типов файлов, основанные на окончаниях файлов?
Джоанна Ларссон,
Да, я хочу изменить значки нескольких файлов в один значок.
karthick87
Не значки запуска, значки по умолчанию для типов файлов.
karthick87

Ответы:

10

«эмблемы» хранятся в виде двоичных файлов в каталоге ~/.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 + '"')

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

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

Rinzwind
источник