Examinar carpetas con más de 100000 imágenes.

8

Tengo una carpeta con 322000 imágenes. Cuando voy a esa carpeta con cualquier administrador de archivos, se atasca en la carga.

¿Cómo puedo ir allí y ver o eliminar imágenes?

usuario22005
fuente
¿Podría darnos algún comentario sobre la (s) respuesta (s) que intentó, funcionó (o algo) para usted?
Jacob Vlijm
por supuesto. Me encanta este foro, está lleno de profesionales.
user22005
¿Pregenerar todas las miniaturas para esa carpeta? Use askubuntu.com/a/201997/350004 para eso.
solSTiCe

Respuestas:

5

Divida automáticamente sus archivos en un directorio (recursivo) con un número arbitrario de archivos por (sub) carpeta / carpetas por carpeta superior

La forma más fácil y más eficiente de mi humilde opinión es hacer que un script reorganice los archivos en carpetas, si es necesario, incluso en diferentes capas de niveles de directorio. Esto hará que sus archivos sean navegables sin asfixiar el nautilus.

El siguiente script lo hará por usted. Creará carpetas con un número arbitrario de archivos. Estas carpetas se organizarán en subcarpetas si exceden un (mismo) número arbitrario, etc. En otras palabras; cada (sub) nivel tendrá el mismo número máximo de archivos / subdirectorios, lo que hará posible la navegación fácilmente.

Cada una de las carpetas creadas muestra el número de carpeta + el número de subniveles creados (donde, por ejemplo, 22_1 solo contiene archivos):

ingrese la descripción de la imagen aquí

La prueba

Probé en un directorio de 300,000 archivos, para ser reorganizado en fragmentos de (max) 100 archivos, para organizarse en directorios superiores de (max) 100 carpetas, etc.
Me tomó menos de un minuto en mi sistema. Una prueba de 100.000 archivos en fragmentos más pequeños fue cuestión de segundos.

La secuencia de comandos

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

Cómo utilizar

  1. Copie el script en una carpeta vacía, guárdelo como reorganize.py
  2. En la sección de cabecera, establezca la ruta a su directorio, el número deseado de archivos por subdirectorio (= igual a carpetas por directorio que contiene).
  3. Ejecútelo con el comando:

    python3 /path/to/reorganize.py
    

Nota

El script (tal como está) simplemente crea una estructura de directorio donde cada nivel tiene un número definido de archivos / carpetas. No tiene en cuenta ningún tipo de organización por nombre, fecha o lo que sea.


EDITAR

Como se solicitó en un comentario, una secuencia de comandos para mover los archivos de nuevo a un directorio plano después de haber procesado los archivos.
El uso es más o menos el mismo. Como directorio, establezca el mismo directorio que el primer script, pero eso parece obvio.

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

Como se mencionó en un comentario, el script asume que no hay riesgo de conflictos de nombres, ya que todos los archivos provienen inicialmente del mismo directorio (plano).

Jacob Vlijm
fuente
Esto funcionó exactamente como dijiste y es increíble. gracias Señor.
user22005
¿Hay alguna manera de mover todos esos archivos a una carpeta?
user22005
@ user22005 quieres decir de nuevo en una carpeta? Entiendo que de ahí vienen, pero sí, absolutamente. ¿Necesitas un script adicional? Solo mencionalo :).
Jacob Vlijm
exactamente. Necesito un script para mover todos esos archivos de regreso a donde estaban.
user22005
@ user22005 para asegurarse: ¿el directorio era inicialmente "plano" (sin subdirectorios)?
Jacob Vlijm
4

Este es un problema en el administrador de archivos nautiluscuando se trabaja con directorios que contienen una gran cantidad de archivos, esto se describe en este error .

Te aconsejo en este caso que uses un administrador de archivos rápido. puede usarlo entre gnome-commander5 y 6 veces más rápido que nautilus y esta proporción aumenta cuando se trata con una gran cantidad de archivos. No es una GUI bonita, pero debería ayudarlo a solucionar su problema.

Para instalarlo:

sudo apt-get install gnome-commander

Ahora abra el directorio con gran cantidad de archivos:

gnome-commander /path-to-dir
Maythux
fuente
Esto no me dio la Vista en miniatura que necesitaba para ver y eliminar imágenes.
user22005
1

No tengo ninguna experiencia personal con bibliotecas tan grandes, pero he oído bien sobre los delfines.

Dolphin es el administrador de archivos utilizado en distribuciones de KDE como Kubuntu. Puede instalarlo y ejecutarlo bien en el escritorio de Ubuntu, aunque la huella puede ser bastante grande, ya que tiene que descargar e instalar muchas dependencias de KDE.

Descargar Dolphin File Manager

Otro enfoque podría ser el uso de un photomanager. Asumiría que tales herramientas estarían optimizadas para mostrar grandes colecciones.

Para los fotomanagers hay bastantes alternativas, pero algunas populares son:

Shotwell , Digikam y F-Spot

Steffen Christensen
fuente
1

Intenté el administrador de archivos Thunar con imágenes del orden de 10,000. Muestra miniaturas con bastante rapidez en unidades locales y también abre unidades de red, pero mucho más lento. Sin embargo, no lo he probado para una mayor cantidad de archivos. Pero al menos, hace un trabajo mucho mejor que Nautilus sin comprometer la interfaz gráfica.

sudo apt-get install thunar

También hay un script para convertirlo en su Administrador de archivos predeterminado (si lo desea). Puedes encontrar el guión aquí:

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

Hazem
fuente
0

Puede pasar por el terminal a esa carpeta, do gnome-open image.jpgo xdg-open image.jpg, que debería abrir una de las imágenes con gnome-image-viewero más comúnmente conocido como eye of gnome(eog). A continuación, si presiona F9o va a Ver -> Galería de imágenes, puede obtener una vista previa de las miniaturas.

Sergiy Kolodyazhnyy
fuente