Sfogliare le cartelle con oltre 100000 immagini


8

Ho una cartella con 322000 immagini al suo interno. Quando vado in quella cartella con qualsiasi file manager, mi si blocca nel caricamento.

Come posso andare lì e visualizzare o eliminare immagini?


Potresti dare un feedback sulle risposte che hai provato, ha funzionato (o alcuni) per te?
Jacob Vlijm,

ovviamente. Adoro questo forum, è pieno di professionisti.
user22005

Pregenerare tutte le anteprime per quella cartella? Usa askubuntu.com/a/201997/350004 per questo.
solsTiCe

Risposte:


5

Dividi automaticamente i tuoi file in una directory (ricorsiva) con un numero arbitrario di file per (sotto) cartella / cartelle per cartella superiore

Il modo più semplice e più efficace di IMHO è di fare in modo che uno script riorganizzi i file in cartelle, se necessario anche a livelli diversi di directory. Ciò renderà i tuoi file sfogliabili senza soffocare nautilus.

Lo script qui sotto lo farà per te. Creerà cartelle con un numero arbitrario di file. Queste cartelle saranno organizzate in sottocartelle se superano uno (stesso) numero arbitrario, ecc. In altre parole; ogni (sotto) livello avrà lo stesso numero massimo di file / sottodirectory, rendendo la navigazione facilmente possibile.

Ciascuna delle cartelle create mostra il numero della cartella + il numero dei livelli secondari creati (dove ad es. 22_1 contiene solo file):

inserisci qui la descrizione dell'immagine

Il test

Ho provato su una directory di 300.000 file, per essere riorganizzato in blocchi di (max) 100 file, per essere organizzato in directory superiori di (max) 100 cartelle ecc.
Ci sono voluti meno di un minuto sul mio sistema. Un test di 100.000 file in blocchi più piccoli è stata una questione di secondi.

Il copione

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

Come usare

  1. Copia lo script in una cartella vuota, salvalo come reorganize.py
  2. Nella sezione head, imposta il percorso della tua directory, il numero desiderato di file per sottodirectory (= uguale alle cartelle per directory contenente).
  3. Eseguilo con il comando:

    python3 /path/to/reorganize.py
    

Nota

Lo script (così com'è) crea semplicemente una struttura di directory in cui ogni livello ha un numero definito di file / cartelle. Non tiene conto di alcun tipo di organizzazione per nome, data o altro.


MODIFICARE

Come richiesto in un commento, uno script per spostare nuovamente i file in una directory piatta dopo averli elaborati.
L'uso è praticamente lo stesso. Come directory, imposta la stessa directory del primo script, ma questo sembra ovvio.

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

Nota

Come menzionato in un commento, lo script presuppone che non vi sia rischio di scontro tra nomi, poiché inizialmente tutti i file provenivano dalla stessa directory (piatta).


Ha funzionato esattamente come hai detto ed è fantastico. grazie Signore.
user22005

c'è un modo per spostare tutti quei file in una cartella?
user22005

@ user22005 vuoi dire di nuovo in una cartella? Capisco da dove vengono ?, ma sì assolutamente. Hai bisogno di uno script aggiuntivo? Basta menzionarlo :).
Jacob Vlijm,

Esattamente. Ho bisogno di uno script per spostare tutti quei file nel punto in cui si trovavano.
user22005

@ user22005 per essere sicuri: la directory era inizialmente "piatta" (nessuna sottodirectory)?
Jacob Vlijm,

4

Questo è un problema nel file manager nautilusquando si lavora con directory che contengono un numero elevato di file, questo è descritto in questo errore .

Ti consiglio in questo caso di utilizzare alcuni file manager veloci. puoi usare gnome-commanderda 5 a 6 volte più veloce di nautilus e questo rapporto aumenta quando si tratta di un numero elevato di file. Non è quella graziosa GUI ma dovrebbe aiutarti a risolvere il tuo problema.

Per installarlo:

sudo apt-get install gnome-commander

Ora apri la directory con un gran numero di file:

gnome-commander /path-to-dir

Questo non mi ha dato la visualizzazione delle miniature di cui avevo bisogno per visualizzare ed eliminare le immagini.
user22005

1

Non ho alcuna esperienza personale con le biblioteche così grandi, ma ho sentito parlare bene di Delfino.

Dolphin è il file manager utilizzato nelle distribuzioni di KDE come Kubuntu. Puoi installarlo ed eseguirlo bene sul desktop di Ubuntu, anche se l'impronta potrebbe essere piuttosto grande, poiché deve scaricare e installare molte dipendenze di KDE.

Scarica Dolphin File Manager

Un altro approccio potrebbe essere quello di utilizzare un photomanager. Suppongo che tali strumenti sarebbero ottimizzati per visualizzare raccolte di grandi dimensioni.

Per i fotomanager ci sono alcune alternative, ma un paio di quelle popolari sono:

Shotwell , Digikam e F-Spot


1

Ho provato il file manager Thunar con immagini nell'ordine di 10.000. Visualizza le anteprime abbastanza rapidamente sulle unità locali e apre anche le unità di rete ma molto più lentamente. Non l'ho provato per un numero maggiore di file, però. Ma almeno, fa un lavoro molto migliore di Nautilus senza compromettere l'interfaccia grafica

sudo apt-get install thunar

C'è anche uno script per renderlo il tuo File Manager predefinito (se ti piace). Puoi trovare lo script qui:

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


0

È possibile passare attraverso il terminale a quella cartella, do gnome-open image.jpgo xdg-open image.jpg, che dovrebbe aprire una delle immagini con gnome-image-viewero più comunemente noto come eye of gnome(eog). Successivamente, se si preme F9o si passa a Visualizza -> Galleria di immagini è possibile visualizzare l'anteprima delle miniature.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.