Menjelajah folder dengan lebih dari 100.000 gambar

8

Saya memiliki folder dengan 322000 gambar di dalamnya. Ketika saya pergi ke folder itu dengan pengelola file apa pun, ia macet saat memuat.

Bagaimana saya bisa pergi ke sana dan melihat atau menghapus gambar?

pengguna22005
sumber
Bisakah Anda memberikan umpan balik pada jawaban yang Anda coba, apakah itu (atau beberapa) bekerja untuk Anda?
Jacob Vlijm
tentu saja. Saya suka forum ini, penuh dengan para profesional.
user22005
Pregenerate semua thumbnail untuk folder itu? Gunakan askubuntu.com/a/201997/350004 untuk itu.
solsTiCe

Jawaban:

5

Secara otomatis membagi file Anda menjadi direktori (rekursif) dengan jumlah file yang sewenang-wenang per (sub) folder / folder per folder superior

Cara termudah dan IMHO yang paling efisien adalah membuat skrip mengatur ulang file ke dalam folder, jika perlu, bahkan pada tingkat direktori yang berbeda. Ini akan membuat file Anda dapat dijelajahi tanpa mencekik nautilus.

Script di bawah ini akan melakukannya untuk Anda. Ini akan membuat folder dengan jumlah file yang sewenang-wenang. Folder-folder ini akan diatur ke dalam sub folder jika melebihi angka (sama) sewenang-wenang, dll. Dengan kata lain; setiap tingkat (sub-) akan memiliki jumlah file / sub direktori maksimum yang sama, membuat penelusuran menjadi mudah.

Setiap folder yang dibuat menunjukkan nomor folder + jumlah sub level yang dibuat (di mana misalnya 22_1 hanya berisi file):

masukkan deskripsi gambar di sini

Ujian

Saya menguji pada direktori 300.000 file, untuk ditata ulang dalam potongan (maks) 100 file, untuk disusun menjadi direktori superior (maksimal) 100 folder dll.
Butuh waktu kurang dari satu menit pada sistem saya. Pengujian 100.000 file menjadi potongan yang lebih kecil adalah hitungan detik.

Naskah

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

Cara Penggunaan

  1. Salin skrip ke folder kosong, simpan sebagai reorganize.py
  2. Di bagian kepala, setel path ke direktori Anda, jumlah file yang diinginkan per subdirektori (= sama dengan folder per direktori yang berisi).
  3. Jalankan dengan perintah:

    python3 /path/to/reorganize.py
    

Catatan

Script (sebagaimana adanya) hanya membuat struktur direktori di mana setiap level memiliki jumlah file / folder yang ditentukan. Itu tidak memperhitungkan segala jenis organisasi dengan nama, tanggal atau apa pun.


EDIT

Seperti yang diminta dalam komentar, skrip untuk memindahkan file kembali ke satu direktori datar setelah memproses file.
Penggunaannya hampir sama. Sebagai direktori, tetapkan direktori yang sama dengan skrip pertama, tetapi itu tampak jelas.

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

Catatan

Seperti disebutkan dalam komentar, skrip mengasumsikan tidak ada risiko bentrokan nama, karena semua file pada awalnya berasal dari direktori (flat) yang sama.

Yakub Vlijm
sumber
Ini bekerja persis seperti yang Anda katakan dan itu luar biasa. Terima kasih Pak.
user22005
apakah ada cara untuk memindahkan semua file ke satu folder?
user22005
@ user22005 maksud Anda kembali ke satu folder? Saya mengerti dari mana mereka berasal ?, tapi ya tentu saja. Apakah Anda memerlukan skrip tambahan? Sebut saja :).
Jacob Vlijm
persis. Saya perlu skrip untuk memindahkan semua file itu kembali ke tempatnya semula.
user22005
@ user22005 untuk memastikan: apakah direktori awalnya "flat" (tidak ada subdirektori)?
Jacob Vlijm
4

Ini adalah masalah di manajer file nautilusketika bekerja dengan direktori yang berisi sejumlah besar file, ini dijelaskan dalam bug ini .

Saya menyarankan Anda dalam hal ini untuk menggunakan beberapa Manajer file cepat. Anda dapat menggunakannya gnome-commander5X hingga 6X kali lebih cepat dari nautilus dan rasio ini semakin besar saat menangani sejumlah besar file. Ini bukan GUI yang cantik tapi itu akan membantu Anda untuk memperbaiki masalah Anda.

Untuk menginstalnya:

sudo apt-get install gnome-commander

Sekarang buka direktori dengan banyak file:

gnome-commander /path-to-dir
Maythux
sumber
Ini tidak memberi saya Tampilan Gambar Kecil yang saya perlukan untuk melihat dan menghapus gambar.
user22005
1

Saya tidak punya pengalaman pribadi dengan perpustakaan sebesar itu, tapi saya sudah banyak mendengar tentang lumba-lumba.

Dolphin adalah manajer file yang digunakan dalam distribusi KDE seperti Kubuntu. Anda dapat menginstalnya dan menjalankannya dengan baik di Desktop Ubuntu, meskipun tapaknya mungkin cukup besar, karena harus mengunduh dan menginstal banyak dependensi KDE.

Unduh Dolphin File Manager

Pendekatan lain mungkin menggunakan fotografer. Saya berasumsi alat seperti itu akan dioptimalkan untuk menampilkan koleksi besar.

Untuk fotografer wanita ada beberapa alternatif, tetapi beberapa yang populer adalah:

Shotwell , Digikam dan F-Spot

Steffen Christensen
sumber
1

Saya mencoba file manager Thunar dengan gambar dalam urutan 10.000. Menampilkan thumbnail dengan cukup cepat pada drive lokal dan juga membuka drive jaringan tetapi jauh lebih lambat. Saya belum mencobanya untuk jumlah file yang lebih besar. Tapi setidaknya, itu melakukan pekerjaan yang jauh lebih baik daripada Nautilus tanpa mengorbankan antarmuka grafis

sudo apt-get install thunar

Ada juga skrip untuk menjadikannya File Manager default Anda (jika Anda suka). Anda dapat menemukan skrip di sini:

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

Hazem
sumber
0

Anda bisa melalui terminal ke folder itu, melakukan gnome-open image.jpgatau xdg-open image.jpg, yang seharusnya membuka salah satu gambar dengan gnome-image-vieweratau lebih dikenal sebagai eye of gnome(eog). Selanjutnya, jika Anda menekan F9atau pergi ke View -> Image Gallery Anda dapat melihat dulu thumbnail.

Sergiy Kolodyazhnyy
sumber