Как я могу удалить файлы, ранее удаленные из Darktable? - Фотопедия
5 голосов
/ 08 июня 2018

Я удаляю ненужные изображения из Darktable нажатием клавиши Del. Я только что узнал, что это не удаление изображений с моего жесткого диска, а только удаление их из базы данных Darktable.

Как я могу удалить (со своего жесткого диска) изображения, которые я уже удалил из Darktable?

Ответы [ 5 ]

6 голосов
/ 08 июня 2018

Darktable имеет две различные операции: Удалить и Удалить / Корзина . По умолчанию ключ DEL привязан к первому. Это просто удаляет информацию об этом файле из базы данных и не влияет на сам файл. Вы можете изменить это в настройках под ярлыками :

darktable preferences dialog

Дважды щелкните строку «удалить с диска или отправить в корзину» и нажмите DEL. Теперь в будущем удаление будет «реальным» в файловой системе, а не только в базе данных.

К сожалению, для вас нет способа сделать это задним числом, потому что по определению теперь darktable не знает об этих файлах.

Darktable включает скрипт для обратного: удалять файлы из базы данных, когда их больше нет на диске. Если вы немного разбираетесь в сценариях оболочки и знаниях SQL, этот пример поможет вам начать делать обратное.

Или вы можете использовать умное предложение @ junkyardsparkle .

2 голосов
/ 18 мая 2019

Вы можете присвоить 5 звездочек всем изображениям в вашей коллекции (выбрать все, затем нажать клавишу 5), а затем использовать следующий скрипт для удаления всех изображений с рейтингом 1 (рейтинг по умолчанию).

for f in `grep -l 'Rating="1"' \`ls *.xmp\``
do
    rm ${f%.xmp}
    rm $f
done

Предполагается, что вы не изменили рейтинг удаленных изображений. В качестве альтернативы, если вы «отклонили» изображения перед их удалением, замените 'Rating="-1"' на 'Rating="1"'

Если вы хотите убедиться, что это не приведет к удалению непреднамеренных файлов, вы всегда можете добавить echo перед rm, в котором будет указано, какие файлы будут удалены без удаления.

2 голосов
/ 08 июня 2018

Если вы действительно хотите сделать это из darktable, вы можете попробовать сделать что-то вроде добавления уникального тега ко всем изображениям, находящимся в базе данных darktable, а затем выполнить рекурсивный (повторный) импорт изображений из корневого каталога вашей коллекции изображений, затем используйте функции коллекции darktable , чтобы собрать все изображения без этого тега, а затем фактически удалите их после тщательного просмотра, чтобы убедиться, что вы собрали то, что намеревались , Затем удалите маркерный тег из остальных файлов в базе данных.

Это чисто теоретически, я никогда не пробовал, и процесс может быть болезненным для большой коллекции. Предполагается также, что вы говорите о файлах RAW, поэтому любые ранее экспортированные JPEG-файлы могут быть исключены из этапа повторного импорта. Если вы попробуете это, убедитесь, что то, что вы собираетесь удалить, это то, что вы на самом деле хотите удалить.

0 голосов
/ 08 августа 2018

С небольшой помощью терминала или файлового менеджера:

  • выбрать все фотографии в таблице
  • создать каталог temp_dt
  • выбранные изображения -> переместить> выбрать temp_dt
  • удалить все файлы в исходном каталоге с помощью файлового менеджера / терминала
  • переместить все файлы обратно в исходный каталог
  • удалить temp_dt
0 голосов
/ 08 июня 2018

Насколько я знаю, это не возможно изнутри темной таблицы каким-либо прямым способом.

Если вы отметили все удаленные изображения перед их удалением, перезагрузка папок может показать удаленные изображения с целыми отметками, поэтому вы можете выбрать их и затем «удалить» выбранные изображения. При удалении Darktable оставляет файлы xmp в покое, и они содержат любую разметку, которую вы сделали на изображениях до удаления.

В противном случае вам, возможно, придется использовать базу данных Darktable и удалить все файлы, которых нет в базе данных. Для этого, вероятно, нужен сценарий, который может существовать или не существовать. Если вы не получите лучшего ответа здесь, вы можете спросить в списке рассылки Darktable
(Darktable-user+subscribe@lists.darktable.org).

...