У меня есть папка с 30 гигабайтами медиафайлов. Требуется несколько часов, чтобы отсортировать их по "дате", чтобы разбить их на новые папки "год_месяц". Как мне искать / отфильтровывать только выбранный месяц года в большом списке файлов?
Ответы ответившим
В ответ на ответ о добавлении библиотек:
ОтПоказать библиотеки в проводнике:
Чтобы отобразить библиотеки в проводнике, выберите вкладку Вид, а затем выберите Панель навигации > Показать библиотеки.
Если я расположу в библиотеке по дням:
Я вижу только ту же дату 05.08.2023 в колонке «Datum» библиотеки:
Но я обнаружил, что эта же неправильная дата уже есть в папке Backup, поэтому библиотека не может быть лучше той, что есть в данных:
Хотя у меня есть старый скриншот из Ask Different Stack ExchangeПочему мне приходится повторять попытку копирования много раз и с большим количеством ошибок, чтобы переместить гигабайты файлов изображений и видео с iPhone 7 на ПК с Windows?(что вообще заставило меня задать здесь этот вопрос)
где вы видите, что данные HEIC содержали и другие даты:
Но если я проверю те же данные сейчас, вы увидите, что я больше не могу получить изображения HEIC в списке файлов, вероятно, потому что я переместил их в правильные месяцы. В любом случае, если там есть только 05.08.2023, только эта дата может быть показана в библиотеке, и это моя вина, если файлы HEIC отсутствуют
Хотя столбец «Datum» в папке iPhone, отображаемой в Windows, содержит истинные даты, просмотрите те же файлы еще раз:
Это означает, что резервная копия переопределила даты и что трюк с библиотекой для быстрой индексированной сортировки путем выбора "упорядочить по месяцам" должен сработать. Вот почему я принимаю это.
решение1
Если папка индексирована, вы можете создать новую библиотеку из папки. Хотя многие игнорируют библиотеки, они предлагают Arrange by >
функциональность из фонового контекстного меню, которое часто предоставляет все необходимые вам функции поиска.
Различные типы библиотек или шаблоны предлагают различные Arrange by >
варианты. Для ваших нужд, даже если ваши файлы являются медиа, используйте шаблон, Pictures
который он предлагает Month
и отображает "стеки" (виртуальные папки) для каждой группы месяцев/годов, как показано на этом снимке экрана:
Затем, чтобы скопировать/переместить файлы, дважды щелкните по стопке, чтобы открыть ее, нажмите ctrl«+» A, чтобы выбрать все, и скопируйте/переместите нужные файлы.
Редактировать: Arrange by >
Параметры различаются в зависимости от типа библиотеки, которые похожи на FolderTypes. Если вы не видите вариантов:
Month
Day
Rating
Tag
то ваша библиотека не оптимизирована для изображений. Это можно изменить через диалоговое окно библиотекиProperties
:
Это должно подойти вам, если, как я подозреваю, Datum
эквивалентно столбцу Date
в англоязычной версииИсследователь. Это довольно уникальное свойство, поскольку оно не является ни свойством файловой системы,НИМетаданные Exif хранятся в файле, а скорее динамическое свойство, определяемое типом файла и тем, Date Taken
присутствуют ли в файле метаданные, например. См. мой ответздесьдля получения дополнительной информации. Как показывает связанная документация в этом ответе, полное имя свойства — System.ItemDate
, и это то же самое свойство, которое библиотека оптимизировала для Pictues
использования в стеке по месяцам:
Редактировать: Устранение неполадок
Скопируйте и вставьте этот код вPowerShellокно для возвратаКаноническое имясвойств, выбранных в качестве столбцов сортировки в одном или нескольких открытыхИсследовательокна:
@((New-Object -Com shell.application).Windows()).ForEach{ Echo ('{0}Window Title :{1,30}{0}Sort Column(s) :{2,30}{0}' -f "`n`t", $_.LocationName, $_.Document.SortColumns)}
Выход:
PS C:\> @((New-Object -Com shell.application).Windows()).ForEach{ Echo ('{0}Window Title :{1,30}{0}Sort Column(s) :{2,30}{0}' -f "`n`t", $_.LocationName, $_.Document.SortColumns)}
Window Title : Pictures
Sort Column(s) : prop:-System.ItemDate;
PS C:\>
Выполните код в папке с картинками, затем снова после перехода в библиотеку. Свойства те же???
решение2
Поиск по шаблону [поле:месяц год] (работает только для небольших выборок)
Откройте папку с файлами, которые вы хотите отфильтровать. В поле поиска вверху справа введите на языке вашей системы по следующему шаблону:
[column name]:[month in letters] [year]
Пример на немецком языке:
- Янв 2023 / Янв 2023
- Фев 2023 / Февраль 2023
- Март 2023
- Апрель 2023 г. / Апрель 2023 г.
- ...
Марки:
В меню поиска вы можете найти множество других шаблонов, например, этот месяц, прошлый месяц и т. д., и если вы нажмете на них, вы также увидите их код в строке поиска, готовый к дальнейшей настройке:
Чтобы вы могли нажать на «Änderungsdatum: letzten Monat», которая является «датой изменения» последнего месяца (имеется в виду не месяц назад, а последний календарный месяц):
И поскольку мне это нужно для другого поля/столбца, а не для «даты изменения», я могу изменить его на столбец «datum»:
Похоже, это не работает с большими списками файлов.
Как ни странно, это, похоже, работает не со всеми файлами, поскольку мой фильтр по «Августу 2023» с его выводом, который я переместил в папку «202308», выглядит следующим образом:
Как видно из нескольких примеров изображений этого скриншота, я все еще нахожу другие изображения других месяцев, и оказывается, что этовсеHEIC и несколько изображений JPG (11500 из 12000). Фильтруя внутри этой папки "202308" снова, я получаю только изображения "Aug 2023", таким образом, фильтр каким-то образом работает в результатах поиска, так что он может просто не работать при перемещении этого огромного и, возможно, не полностью загруженного результата поиска в новую папку?!
Затем я подумал, что я мог бы поймать только файлы "datum:aug 2023", когда я не нажимаю Ctrl+A
, а отметить первый и последний в этом результате поиска и переместить их только тогда. Но в тесте, когда я отмечал только отфильтрованные файлы результата поиска, было отмечено то же количество файлов, что и количество файлов, которые находятся во всей папке, таким образом, вы, кажется, отмечаетевсефайлов в этой папке, даже если ее результат поискадолженменьше файлов (так как я точно знаю, что не все файлы там были «август 2023»).И это означает, что фильтр поиска не может быть использован для разделения выбранного месяца от другого, к сожалению. Поэтому этот ответ не подходит для больших папок, он работает только для маленьких.
Я продолжил фильтровать другие месяцы и переместил их в их собственную папку year_month, но поскольку все файлы HEIC у меня были в этой папке "202308", я не нашел никаких изображений HEIC. Фильтр нашел только несколько файлов MOV и JPG:
Я все равно пошел дальше, чтобы хотя бы переместить те файлы, которые удалось найти, чтобы размер большой папки уменьшился хотя бы немного. Теперь мне еще нужно отсортировать оставшиеся 11500 файлов по "datum", что займет часы. Странный баг.
Таким образом, я до сих пор не нашел способа отфильтровать эти месяцы изображений HEIC и других из этого большого списка файлов; из ~12000 файлов в одной папке по-прежнему находится ~11500 изображений HEIC/PNG/JPG.
Разделить по имени файла
Так как у меня была папка, в которой были объединены все ежемесячные папки моего iPhone с большим количеством дубликатов в именах, я в итоге переместил каждый файл с пометкой «(2)» в новую папку и продолжил с другими маркерами, таким образом, начав разделение по имени, а затем отсортировав меньшую выборку (тогда всего 1300 файлов) по столбцу даты:
Это сработало, сортировка больше не занимала много времени, и я смог разбить эти файлы по ежемесячным подпапкам.
Переместить небольшие выборки из 1000–2000 файлов в другую папку.
Но если у вас нет ничего вроде имени, чтобы добраться до этого, единственный способ справиться с этим — сделать случайную выборку из нескольких тысяч файлов или больше, отсортировать их по дате, разбить по папкам и перейти к следующей выборке. Вот что у меня получилось, и, возможно, с этого уже стоит начать, поскольку это было сделано довольно быстро, даже если вам пришлось перемещать файлы в ежемесячные папки десятки раз. По крайней мере, компьютер мог с этим справиться.
Запрограммируй это
Я много раз имел дело с файлами в Python, и с библиотекой pathlib должно быть легко прочитать "datum" и переместить его в папку year_month без каких-либо действий вручную. Я не тратил время, но это должно быть лучшим способом, чем сотни раз перемещать файлы в нужные ежемесячные папки.