Przeglądanie folderów zawierających ponad 100 000 obrazów

8

Mam folder z 322000 obrazkami. Kiedy przechodzę do tego folderu z dowolnym menedżerem plików, blokuje się podczas ładowania.

Jak mogę tam wejść i wyświetlić lub usunąć obrazy?

użytkownik22005
źródło
Czy mógłbyś przekazać jakieś uwagi na temat odpowiedzi, które próbowałeś, czy to (lub niektóre) działało dla Ciebie?
Jacob Vlijm
oczywiście. Uwielbiam to forum, jest wypełnione profesjonalistami.
user22005
Wygenerować wstępnie wszystkie miniatury dla tego folderu? W tym celu skorzystaj z askubuntu.com/a/201997/350004 .
solsTiCe

Odpowiedzi:

5

Automatyczne dzielenie plików na (rekurencyjny) katalog z dowolną liczbą plików na (pod) folder / foldery na nadrzędny folder

Najłatwiejszym i najskuteczniejszym sposobem IMHO jest reorganizacja plików w folderach, w razie potrzeby nawet na różnych poziomach poziomów katalogów. To sprawi, że twoje pliki będą można przeglądać bez zadławienia nautilusa.

Poniższy skrypt zrobi to za Ciebie. Stworzy foldery z dowolną liczbą plików. Foldery te zostaną zorganizowane w podfoldery, jeśli przekroczą (tę samą) dowolną liczbę itp. Innymi słowy; każdy (pod) poziom będzie miał taką samą maksymalną liczbę plików / podkatalogów, co ułatwi przeglądanie.

Każdy z utworzonych folderów pokazuje numer folderu + liczbę utworzonych podpoziomów (gdzie np. 22_1 zawiera tylko pliki):

wprowadź opis zdjęcia tutaj

Test

Przetestowałem w katalogu zawierającym 300 000 plików, które zostały zreorganizowane w kawałki (maks.) 100 plików, aby były uporządkowane w doskonałych katalogach (maks.) 100 folderów itp.
Zajęło to mniej niż minutę w moim systemie. Test 100 000 plików na mniejsze fragmenty zajął kilka sekund.

Scenariusz

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

Jak używać

  1. Skopiuj skrypt do pustego folderu i zapisz go jako reorganize.py
  2. W sekcji nagłówka ustaw ścieżkę do katalogu, żądaną liczbę plików w podkatalogu (= równą folderom w katalogu zawierającym).
  3. Uruchom go za pomocą polecenia:

    python3 /path/to/reorganize.py
    

Uwaga

Skrypt (tak jak jest) po prostu tworzy strukturę katalogów, w której każdy poziom ma określoną liczbę plików / folderów. Nie bierze pod uwagę żadnej organizacji według nazwy, daty ani żadnej innej.


EDYTOWAĆ

Zgodnie z prośbą w komentarzu, skrypt do przeniesienia plików z powrotem do jednego płaskiego katalogu po przetworzeniu plików.
Użycie jest prawie takie samo. Jako katalog ustaw ten sam katalog co pierwszy skrypt, ale wydaje się to oczywiste.

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

Uwaga

Jak wspomniano w komentarzu, skrypt zakłada, że ​​nie ma ryzyka kolizji nazw, ponieważ wszystkie pliki początkowo pochodziły z tego samego (płaskiego) katalogu.

Jacob Vlijm
źródło
To działało dokładnie tak, jak powiedziałeś i jest niesamowite. Dziękuję Panu.
user22005
czy istnieje sposób na przeniesienie wszystkich tych plików do jednego folderu?
user22005
@ user22005 masz na myśli powrót do jednego folderu? Rozumiem, że skąd pochodzą ?, ale tak, absolutnie. Potrzebujesz dodatkowego skryptu? Po prostu o tym wspomnij :).
Jacob Vlijm
dokładnie. Potrzebuję skryptu, aby przenieść wszystkie te pliki z powrotem do miejsca, w którym były.
user22005
@ user22005, aby się upewnić: czy katalog był początkowo „płaski” (brak podkatalogów)?
Jacob Vlijm
4

Jest to problem w menedżerze plików nautiluspodczas pracy z katalogami zawierającymi dużą liczbę plików, co opisano w tym błędzie .

Radzę w tym przypadku użyć szybkiego menedżera plików. możesz użyć gnome-commandertego od 5 do 6 razy szybciej niż nautilus, a stosunek ten staje się większy, gdy masz do czynienia z dużą liczbą plików. To nie jest tak ładny GUI, ale powinien pomóc ci rozwiązać problem.

Aby zainstalować:

sudo apt-get install gnome-commander

Teraz otwórz katalog z dużą liczbą plików:

gnome-commander /path-to-dir
Maythux
źródło
To nie dało mi widoku miniatur, który potrzebowałem do przeglądania i usuwania zdjęć.
user22005
1

Nie mam osobistego doświadczenia z tak dużymi bibliotekami, ale dobrze słyszałem o delfinach.

Dolphin to menedżer plików używany w dystrybucjach KDE, takich jak Kubuntu. Możesz go zainstalować i uruchomić dobrze na Ubuntu Desktop, chociaż może być dość duży, ponieważ musi pobrać i zainstalować wiele zależności KDE.

Pobierz Menedżer plików Dolphin

Innym podejściem może być użycie menedżera zdjęć. Zakładam, że takie narzędzia byłyby zoptymalizowane do wyświetlania dużych kolekcji.

Dla fotomanagerów jest całkiem sporo alternatyw, ale kilka popularnych to:

Shotwell , Digikam i F-Spot

Steffen Christensen
źródło
1

Wypróbowałem menedżera plików Thunar z obrazami rzędu 10 000. Wyświetla miniatury dość szybko na dyskach lokalnych i otwiera dyski sieciowe, ale znacznie wolniej. Jednak nie próbowałem tego dla większej liczby plików. Ale przynajmniej wykonuje znacznie lepszą pracę niż Nautilus, nie naruszając interfejsu graficznego

sudo apt-get install thunar

Istnieje również skrypt, aby ustawić go jako domyślny menedżer plików (jeśli Ci się spodoba). Skrypt można znaleźć tutaj:

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

Hazem
źródło
0

Możesz przejść przez terminal do tego folderu, wykonaj gnome-open image.jpglub xdg-open image.jpg, który powinien otworzyć jeden z obrazów z gnome-image-viewerlub bardziej powszechnie znany jako eye of gnome(eog). Następnie, jeśli klikniesz F9lub przejdziesz do Widok -> Galeria obrazów, możesz wyświetlić podgląd miniatur.

Sergiy Kolodyazhnyy
źródło