Вот что я сделал сейчас:
Я создал новый пустой каталог и импортировал изображения из старой структуры папок c:\photos\yyyy\mm\dd
и d:\pictures\yyyy\mm\dd
в новую структуру \\nas\photos\yyyy\yyyy-mm\yyyy-mm-dd
.
Затем я открыл объединенный каталог со своими метаданными, в которых теперь указаны все отсутствующие фотографии. Я использовал «Найти недостающую папку» в корневых папках yyyy
, которые объединили старые корни c:
и d:
, но указали, что папки mm
month все еще отсутствуют.
Затем я закрыл Lightroom, открыл файл .lrcat
в sqlitestudio и выполнил эти запросы, которые переписывают yyyy\mm\dd
в yyyy\yyyy-mm\yyyy-mm-dd
и yyyy\yyyy-mm-dd
в yyyy\yyyy-mm\yyyy-mm-dd
, если папка yyyy
является корнем.
-- yyyy/mm/dd => yyyy/yyyy-mm/yyyy-mm-dd
replace into aglibraryfolder (id_local, id_global, pathFromRoot, rootFolder)
select aglibraryfolder.id_local, aglibraryfolder.id_global,
name || '-' || substr(pathFromRoot, 1, 2) || '/' || name || '-'
|| substr(pathFromRoot, 1, 2) || '-' || substr(pathFromRoot, 4, 2)
|| '/' as pathFromRoot,
aglibraryfolder.rootFolder
from aglibraryfolder, aglibraryrootfolder
where aglibraryfolder.rootFolder = aglibraryrootfolder.id_local
and cast(name as integer) > 1000 and name glob '????'
and pathFromRoot glob '??/??/' ;
-- yyyy/yyyy-mm-dd => yyyy/yyyy-mm/yyyy-mm-dd
replace into aglibraryfolder (id_local, id_global, pathFromRoot, rootFolder)
select aglibraryfolder.id_local, aglibraryfolder.id_global,
substr(pathFromRoot, 1, 7) || '/' || pathFromRoot as pathFromRoot,
aglibraryfolder.rootFolder
from aglibraryfolder, aglibraryrootfolder
where aglibraryfolder.rootFolder = aglibraryrootfolder.id_local
and pathFromRoot glob '????-??-??/'
and cast(name as integer) > 1000
and name == substr(pathFromRoot, 1, 4) ;
После повторного открытия каталога все в порядке, осталось несколько пустых папок с месяцами, их можно удалить.