Перегляд папок із більш ніж 100000 зображень


8

У мене папка з 322000 зображеннями. Коли я переходжу до цієї папки з будь-яким файловим менеджером, він застрягає у завантаженні.

Як я можу зайти туди і переглянути або видалити зображення?


Чи могли б ви дати відгуки щодо відповіді, яку ви пробували, чи працювали це (чи деякі) для вас?
Яків Влійм

звичайно. Я люблю цей форум, він заповнений професіоналами.
користувач22005

Попередньо створити всі ескізи для цієї папки? Використовуйте для цього askubuntu.com/a/201997/350004 .
solsTiCe

Відповіді:


5

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

Найпростіший і найефективніший спосіб IMHO - це сценарій реорганізувати файли в папки, при необхідності навіть різні шари рівнів каталогів. Це зробить ваші файли доступними для перегляду, не задушуючи nautilus.

Наведений нижче сценарій зробить це за вас. Це створить папки з довільною кількістю файлів. Ці папки будуть організовані в підпапки, якщо вони перевищують (однакове) довільне число тощо. Іншими словами; кожен (під) рівень матиме однакову максимальну кількість файлів / підкаталогів, що дозволяє легко переглядати.

Кожна зі створених папок показує номер папки + кількість створених підрівень (де наприклад 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
    

Примітка

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


EDIT

Як вимагається в коментарі, сценарій для переміщення файлів назад в один плоский каталог після обробки файлів.
Використання майже однакове. Як каталог встановіть той самий каталог, що і перший сценарій, але це здається очевидним.

#!/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)

Примітка

Як згадується в коментарі, сценарій припускає, що немає ризику зіткнення імен, оскільки всі файли спочатку надходили з одного (плоского) каталогу.


Це спрацювало так, як ви сказали, і це приголомшливо. Дякую вам сер.
користувач22005

чи є спосіб перемістити всі ці файли в одну папку?
користувач22005

@ user22005 ти маєш на увазі повернення в одну папку? Я розумію, звідки вони беруться ?, але так абсолютно. Вам потрібен додатковий сценарій? Просто згадуйте :).
Яків Влійм

точно. Мені потрібен сценарій, щоб перенести всі ці файли туди, де вони були.
user22005

@ user22005, щоб переконатися: чи спочатку каталог був "плоским" (немає підкаталогів)?
Яків Влійм

4

Це проблема в файловому менеджері nautilusпри роботі з каталогами, що містять велику кількість файлів, це описано в цій помилці .

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

Щоб встановити його:

sudo apt-get install gnome-commander

Тепер відкрийте каталог з великою кількістю файлів:

gnome-commander /path-to-dir

Це не дало мені перегляду мініатюр, який мені знадобився для перегляду та видалення зображень.
користувач22005

1

У мене немає жодного великого особистого досвіду роботи з бібліотеками, але я добре чув про дельфіни.

Dolphin - це файловий менеджер, який використовується в дистрибутивах KDE, таких як Kubuntu. Ви можете встановити його та запустити його просто на робочому столі Ubuntu, хоча слід може бути досить великим, оскільки він повинен завантажувати та встановлювати багато залежностей від KDE.

Завантажте менеджер файлів Dolphin

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

Для фотоменеджерів існує досить багато альтернатив, але пара популярних - це:

Shotwell , Digikam і F-Spot


1

Я спробував файловий менеджер Thunar із зображеннями порядку 10 000. Відображає ескізи досить швидко на локальних накопичувачах і відкриває мережеві диски занадто швидко, але набагато повільніше. Я не пробував цього для більшої кількості файлів. Але, принаймні, це робить набагато кращу роботу, ніж Наутілус, без шкоди для графічного інтерфейсу

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або перейти до Перегляд -> Галерея зображень, ви можете переглянути ескізи.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.