Длинное описание для каталога

Я храню свои изображения в этой структуре:

YYYY/MM/DD-foo

-foo является дополнительным и краткое описание события.

Иногда я хотел бы сохранить длинное описание для этого каталога.

Я думаю ответ, "Можно использовать программу X для изображений", не помогает.

Я хотел бы иметь решение, которое работает на каталоги, содержащие текстовые или звуковые файлы, также.

Вопрос: Как дать каталогу длинное описание? Описание, которое может содержать новые строки и другие символы как наклонная черта?

Обновление

И Вы не можете просто снабдить текстовые файлы описаниями в каталогах?

Да я мог сделать это. Но я думал, что уже существует конвенция или спецификация для этого.

Я хотел бы видеть это в наутилусе:

  • 01-short-directory-name, Long и подробный текст,
  • 02-short-directory-name, Long и подробный Text2,
  • ...

Я не мог найти спецификацию метаданных для каталогов сам.

Необходимые функции

  • Резервное копирование с rsync, tar, Dropbox или owncloud должны работать.
  • Текст должен позволить содержать любой unicode символ.
  • Произвольное отображение значения ключа (как json)
  • Общее решение, не самодельный взлом сценария.
2
задан 26 August 2016 в 11:17

2 ответа

Rinzwind уже представил причины, почему наклонные черты и другие специальные символы не желательны в именах файлов и именах каталогов. Мой ответ представляет простое обходное решение с помощью сценариев Наутилуса.

Введение

Следующий сценарий полагается на существование .directory_description файл в каждом каталоге (отмечают ведущую точку). Если файл не будет существовать, то пользователю предложат создать того.

Преимущества этого подхода:

  1. Простой использовать: .directory_description просто текстовый файл, поэтому просто доступный для редактирования с помощью текстового редактора. Это - просто действие щелчка правой кнопкой, поэтому даже нетехнический пользователь может использовать его.

  2. Описание является частью каталога, поэтому при надлежащем резервном копировании каталога (с включением всех файлов, включая точечные файлы), описание будет сохранено также.

Получение сценария

Сценарий доступен как часть моего репозитория GitHub, а также ниже. Для тех, кто имеет git установленный, используйте следующие шаги в терминале.

  1. cd ~/.local/share/nautilus/scripts
  2. git clone https://github.com/SergKolo/nautilus_scripts

Те, кто не имеет git выполните эти шаги:

  1. скопируйте исходный код непосредственно с этого ответа.
  2. Сохраните код как ~/.local/share/nautius/scripts/read_dir_description.py файл.
  3. Удостоверьтесь, что это - исполняемый файл с chmod +x ~/.local/share/nautius/scripts/read_dir_description.py

Теперь, каждый раз Вы щелкаете правой кнопкой по каталогу и переходите в scripts меню, Вы сможете работать read_dir_description.py на том каталоге.

Исходный код сценария:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Author: Serg Kolo
Date: Aug 16,2016
Written for: http://askubuntu.com/q/809925/295286
"""
import subprocess
import sys
import os.path

def display_file(textfile):
    """ Displays file containing
        directory description if 
        the file exists
    """
    subprocess.call([
                    'zenity', 
                    '--text-info', 
                    '--filename=' + textfile
                    ])

def create_file(textfile):
    """ Creates text file containing
        directory description
        if the description doesn't exist
    """
    try:
        err_text = '"This directory doesn\'t have description.' +\
                   'Would you like to create one now?"'
        subprocess.check_call([
                              'zenity',
                              '--error',
                              '--text=' + err_text
                              ])
    except subprocess.CalledProcessError:
        sys.exit()

    # ensure we create the file
    with open(textfile,'w') as text:
        text.write('')                

    try:

        output = subprocess.check_output([
                           'zenity', 
                           '--text-info', 
                           '--editable',
                           '--filename=' + textfile
                           ])
    except subprocess.CalledProcessError:
        sys.exit()

    with open(textfile,'w') as text:
        text.write(output.decode())



def main():

    file_name = '.directory_description'
    directory = os.path.abspath(sys.argv[1])
    file_path = os.path.join(directory, file_name)

    if os.path.isfile(file_path):
        display_file(file_path)
    else:
        create_file(file_path )

if __name__ == '__main__':
    main()

Сценарий в действии

Доступ к сценарию через щелчок правой кнопкой

enter image description here


Диалоговое окно, уведомляющее, что описание не существует

enter image description here


Демонстрационное описание каталога

enter image description here


5
ответ дан 2 December 2019 в 01:36

Вы могли использовать Расширенные Атрибуты файла. После установки пакета attr можно сделать, например, что-то вроде этого:

setfattr -n user.comment -v "this is a comment" directory_name

и читают его с:

getfattr -n user.comment directory_name

Согласно этот сайт существует пакет, названный eiciel, который интегрируется в Наутилусе.

Наклонные черты и другие символы ASCII не являются проблемой, однако другие символы могут быть хитрыми, видеть https://unix.stackexchange.com/questions/138768/what-is-this-seemingly-base64-data-set-by-setfattr.

rsync, cp, scp и вероятно большинство других стандартных инструментов или сохраняет расширенные атрибуты или имеет опцию сохранить ее.

2
ответ дан 2 December 2019 в 01:36

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

Похожие вопросы: