Просмотр папок с более чем 100000 изображений

8

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

Как я могу зайти туда и просмотреть или удалить изображения?

user22005
источник
Не могли бы вы дать отзыв об ответе (ответах), который вы пробовали, работал ли он (или некоторые) на вас?
Джейкоб Влейм
конечно. Я люблю этот форум, он заполнен профессионалами.
user22005
Предварительно создать все эскизы для этой папки? Используйте для этого askubuntu.com/a/201997/350004 .
SolsTiCe

Ответы:

5

Автоматически разделяйте ваши файлы на (рекурсивный) каталог с произвольным количеством файлов в (подпапке) папке / папке в старшей папке

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

Сценарий ниже сделает это за вас. Это создаст папки с произвольным количеством файлов. Эти папки будут организованы в подпапки, если они превышают (одинаковое) произвольное число и т. Д. Другими словами; каждый (под) уровень будет иметь одинаковое максимальное количество файлов / подкаталогов, что делает просмотр легким и удобным.

Каждая из созданных папок показывает номер папки + количество созданных подуровней (где, например, 22_1 содержит только файлы):

введите описание изображения здесь

Тест

Я проверил каталог на 300 000 файлов, чтобы его можно было реорганизовать в куски (макс.) 100 файлов, организовать в верхние каталоги (макс.) 100 папок и т. Д.
В моей системе это заняло менее минуты. Проверка 100 000 файлов на более мелкие куски заняла считанные секунды.

Сценарий

#!/usr/bin/env python3
import subprocess
import os
import shutil

#--- set the directory to reorganize below
dr = "/path/to/directory"
#--- set the number of files/folders per level
size = 100

level = 0
def move(fn, drn, level):
    folder = dr+"/"+str(drn)+"_"+str(level)
    if not os.path.exists(folder):
        os.mkdir(folder)
    shutil.move(dr+"/"+f, folder+"/"+f)

while len(os.listdir(dr)) > size:
    level += 1
    fn = 0; drn = 1
    for f in os.listdir(dr):
        if fn < size:
            move(fn, drn, level)
        else:
            fn = 0
            drn += 1
            move(fn, drn, level)
        fn += 1

Как пользоваться

  1. Скопируйте скрипт в пустую папку, сохраните его как reorganize.py
  2. В разделе заголовка укажите путь к вашему каталогу, требуемое количество файлов в подкаталоге (= равно числу папок в каждом каталоге).
  3. Запустите его по команде:

    python3 /path/to/reorganize.py
    

Запись

Сценарий (как он есть) просто создает структуру каталогов, где каждый уровень имеет определенное количество файлов / папок. Он не принимает во внимание какую-либо организацию по имени, дате или как угодно.


РЕДАКТИРОВАТЬ

Как указано в комментарии, скрипт для перемещения файлов обратно в один плоский каталог после обработки файлов.
Использование в значительной степени то же самое. В качестве каталога установите тот же каталог, что и первый скрипт, но это кажется очевидным.

#!/usr/bin/env python3
import shutil
import os

#--- set the directory, the same as the first script
dr = "/path/to/directory"
#---

# move the files back
for root, dirs, files in os.walk(dr):
    for file in files:
        shutil.move(root+"/"+file, dr+"/"+file)
# remove the (now empty) subdirectories
for d in os.listdir(dr):
    folder = dr+"/"+d
    if os.path.isdir(folder):
        shutil.rmtree(folder)

Запись

Как упомянуто в комментарии, сценарий предполагает отсутствие риска конфликта имен, так как все файлы изначально были из одного (плоского) каталога.

Якоб Влейм
источник
Это сработало так, как вы сказали, и это круто. Спасибо, сэр.
user22005
Есть ли способ переместить все эти файлы в одну папку?
user22005
@ user22005 ты имеешь ввиду обратно в одну папку? Я так понимаю, откуда они берутся? Да, конечно. Вам нужен дополнительный скрипт? Просто упомяните об этом :).
Джейкоб Влейм
точно. Мне нужен скрипт, чтобы переместить все эти файлы обратно туда, где они были.
user22005
@ user22005, чтобы убедиться: каталог изначально был «плоским» (без подкаталогов)?
Джейкоб Влейм
4

Это проблема в файловом менеджере nautilusпри работе с каталогами, содержащими большое количество файлов, это описано в данной ошибке .

Я советую вам в этом случае использовать какой-нибудь быстрый файловый менеджер. Вы можете использовать gnome-commanderего в 5-6 раз быстрее, чем nautilus, и это соотношение увеличивается при работе с большим количеством файлов. Это не очень красивый графический интерфейс, но он должен помочь вам решить вашу проблему.

Чтобы установить это:

sudo apt-get install gnome-commander

Теперь откройте каталог с большим количеством файлов:

gnome-commander /path-to-dir
Maythux
источник
Это не давало мне просмотр миниатюр, который мне нужен для просмотра и удаления изображений.
user22005
1

У меня нет личного опыта работы с такими большими библиотеками, но я хорошо слышал о дельфинах.

Dolphin - файловый менеджер, используемый в дистрибутивах KDE, таких как Kubuntu. Вы можете установить его и просто запустить на Ubuntu Desktop, хотя занимаемая площадь может быть довольно большой, поскольку он должен загружать и устанавливать множество зависимостей KDE.

Скачать файловый менеджер Dolphin

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

Для фото-менеджеров существует довольно много альтернатив, но есть несколько популярных:

Shotwell , Digikam и F-Spot

Штеффен Кристенсен
источник
1

Я пробовал файловый менеджер Thunar с изображениями порядка 10000. Довольно быстро отображает эскизы на локальных дисках и открывает сетевые диски, но гораздо медленнее. Я не пробовал это для большего количества файлов, все же. Но, по крайней мере, он работает намного лучше, чем Nautilus, не ставя под угрозу графический интерфейс

sudo apt-get install thunar

Существует также скрипт, который сделает его вашим файловым менеджером по умолчанию (если вам это нравится). Вы можете найти скрипт здесь:

https://help.ubuntu.com/community/DefaultFileManager

Хазем
источник
0

Вы можете пройти через терминал в эту папку, сделать gnome-open image.jpgили xdg-open image.jpg, который должен открыть одно из изображений с gnome-image-viewerили более известный как eye of gnome(eog). Далее, если вы нажмете F9или перейдете в «Просмотр» -> «Галерея изображений», вы сможете просмотреть миниатюры.

Сергей Колодяжный
источник