Procurando pastas com mais de 100000 imagens

8

Eu tenho uma pasta com 322000 imagens. Quando vou a essa pasta com qualquer gerenciador de arquivos, ele fica preso no carregamento.

Como posso ir lá e visualizar ou excluir imagens?

user22005
fonte
Você poderia dar algum feedback sobre a (s) resposta (s) que tentou, funcionou (ou alguns) para você?
Jacob Vlijm
claro. Eu amo este fórum, está cheio de profissionais.
user22005
Pregenerar todas as miniaturas dessa pasta? Use askubuntu.com/a/201997/350004 para isso.
solsTiCe 6/06/2015

Respostas:

5

Divida automaticamente seus arquivos em um diretório (recursivo) com um número arbitrário de arquivos por (sub) pasta / pastas por pasta superior

A maneira mais fácil e mais eficiente do IMHO é fazer com que um script reorganize os arquivos em pastas, se necessário, mesmo em diferentes camadas de níveis de diretório. Isso tornará seus arquivos navegáveis ​​sem sufocar o nautilus.

O script abaixo fará isso por você. Ele criará pastas com um número arbitrário de arquivos. Essas pastas serão organizadas em subpastas se excederem um (o mesmo) número arbitrário, etc. Em outras palavras; cada (sub) nível terá o mesmo número máximo de arquivos / subdiretórios, facilitando a navegação.

Cada uma das pastas criadas mostra o número da pasta + o número de subníveis criados (onde, por exemplo, 22_1 contém apenas arquivos):

insira a descrição da imagem aqui

O teste

Eu testei em um diretório de 300.000 arquivos, para ser reorganizado em pedaços de (no máximo) 100 arquivos, para ser organizado em diretórios superiores de (no máximo) 100 pastas, etc.
Demorou menos de um minuto no meu sistema. Um teste de 100.000 arquivos em pequenos pedaços foi uma questão de segundos.

O script

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

Como usar

  1. Copie o script para uma pasta vazia, salve-o como reorganize.py
  2. Na seção principal, defina o caminho para o seu diretório, o número desejado de arquivos por subdiretório (= igual a pastas por diretório contendo).
  3. Execute-o pelo comando:

    python3 /path/to/reorganize.py
    

Nota

O script (como está) apenas cria uma estrutura de diretórios onde cada nível tem um número definido de arquivos / pastas. Não leva em consideração nenhum tipo de organização por nome, data ou qualquer outra coisa.


EDITAR

Conforme solicitado em um comentário, um script para mover os arquivos de volta para um diretório simples após o processamento dos arquivos.
O uso é praticamente o mesmo. Como diretório, defina o mesmo diretório que o primeiro script, mas isso parece óbvio.

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

Conforme mencionado em um comentário, o script assume que não há risco de conflitos de nome, pois todos os arquivos vieram inicialmente do mesmo diretório (plano).

Jacob Vlijm
fonte
Isso funcionou exatamente como você disse e é incrível. obrigado senhor.
user22005
existe uma maneira de mover todos esses arquivos em uma pasta?
user22005
@ user22005 você quer dizer voltar para uma pasta? Entendo que é de onde eles vêm ?, mas sim, absolutamente. Você precisa de um script adicional? Apenas mencione isso :).
Jacob Vlijm 6/06/2015
exatamente. Eu preciso de um script para mover todos esses arquivos de volta para onde eles estavam.
user22005
@ user22005 para garantir: o diretório foi inicialmente "plano" (sem subdiretórios)?
Jacob Vlijm 6/06/2015
4

Este é um problema no gerenciador de arquivos nautilusao trabalhar com diretórios contendo um grande número de arquivos; isso é descrito neste bug .

Aconselho você, neste caso, a usar um gerenciador de arquivos rápido. você pode usá- gnome-commanderlo 5 a 6 vezes mais rápido que o nautilus e essa proporção aumenta quando se lida com um grande número de arquivos. Não é uma GUI bonita, mas deve ajudá-lo a resolver seu problema.

Para instalá-lo:

sudo apt-get install gnome-commander

Agora abra o diretório com grande número de arquivos:

gnome-commander /path-to-dir
Maythux
fonte
Isso não me deu a Visualização em miniatura necessária para visualizar e excluir imagens.
user22005
1

Não tenho nenhuma experiência pessoal com bibliotecas tão grandes, mas ouvi falar bem de golfinhos.

Dolphin é o gerenciador de arquivos usado nas distribuições do KDE, como o Kubuntu. Você pode instalá-lo e executá-lo perfeitamente no Ubuntu Desktop, embora a área ocupada possa ser muito grande, pois ele precisa baixar e instalar muitas dependências do KDE.

Faça o download do Dolphin File Manager

Outra abordagem pode ser usar um fotomanager. Eu assumiria que essas ferramentas seriam otimizadas para exibir grandes coleções.

Para fotomanagers, existem várias alternativas, mas algumas populares são:

Shotwell , Digikam e F-Spot

Steffen Christensen
fonte
1

Eu tentei o gerenciador de arquivos Thunar com imagens da ordem de 10.000. Exibe miniaturas rapidamente nas unidades locais e abre as unidades de rede muito, mas muito mais lentamente. Eu não tentei para um número maior de arquivos, no entanto. Mas, pelo menos, ele faz um trabalho muito melhor que o Nautilus, sem comprometer a interface gráfica

sudo apt-get install thunar

Também existe um script para torná-lo o Gerenciador de arquivos padrão (se você quiser). Você pode encontrar o script aqui:

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

Hazem
fonte
0

Você pode passar pelo terminal para essa pasta, do gnome-open image.jpgou xdg-open image.jpg, que deve abrir uma das imagens com gnome-image-viewerou mais conhecido como eye of gnome(eog). Em seguida, se você clicar F9ou ir para Exibir -> Galeria de imagens, poderá visualizar miniaturas.

Sergiy Kolodyazhnyy
fonte