web-dev-qa-db-ja.com

100000を超える画像を含むフォルダーの閲覧

322000個の画像を含むフォルダーがあります。ファイルマネージャーを使用してそのフォルダーに移動すると、読み込みが停止します。

そこに行って画像を表示または削除するにはどうすればよいですか?

7
user22005

(サブ)フォルダーごとの任意の数のファイル/上位フォルダーごとのフォルダーを持つ(再帰)ディレクトリにファイルを自動的に分割する

最も簡単で最も効率的な方法は、スクリプトを使用してファイルをフォルダーに再編成することです。必要に応じて、ディレクトリレベルの異なるレイヤーも作成します。これにより、ノーチラスを窒息させることなくファイルを閲覧できるようになります。

以下のスクリプトはあなたのためにそれを行います。任意の数のファイルを含むフォルダーを作成します。これらのフォルダーは、(同じ)任意の数などを超える場合、サブフォルダーに編成されます。つまり、各(サブ)レベルには、同じ最大数のファイル/サブディレクトリがあり、ブラウジングが簡単になります。

作成された各フォルダには、フォルダ番号+作成されたサブレベルの数が表示されます(例:22_1にはファイルのみが含まれます)。

enter image description here

テスト

300.000ファイルのディレクトリでテストし、(最大)100ファイルのチャンクに再編成し、(最大)100フォルダの上位ディレクトリに整理しました。
私のシステムでは1分もかかりませんでした。 100.000のファイルを小さなチャンクにテストするのはほんの数秒でした。

スクリプト

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

使い方

  1. スクリプトを空のフォルダーにコピーし、reorganize.pyとして保存します
  2. ヘッドセクションで、ディレクトリへのパス、サブディレクトリごとに必要なファイル数(=含まれるディレクトリごとのフォルダに等しい)を設定します。
  3. 次のコマンドで実行します:

    python3 /path/to/reorganize.py
    

注意

スクリプトは(そのまま)、各レベルに定義された数のファイル/フォルダーがあるディレクトリ構造を作成します。名前、日付、その他のあらゆる種類の組織を考慮していません。


編集

コメントで要求されているように、ファイルを処理した後にファイルを1つのフラットディレクトリに戻すスクリプト。
使用方法はほとんど同じです。ディレクトリとして、最初のスクリプトと同じディレクトリを設定しますが、それは明らかです。

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

注意

コメントで述べたように、スクリプトはすべてのファイルが最初に同じ(フラット)ディレクトリから来たため、名前の衝突のリスクがないと想定しています。

5
Jacob Vlijm

これは、ファイルマネージャーnautilusの問題です。多数のファイルを含むディレクトリを操作する場合、これは bug で説明されています。

この場合、高速なファイルマネージャを使用することをお勧めします。 gnome-commanderを使用できます。nautilusの5倍から6倍の速度で、多数のファイルを処理する場合はこの比率が大きくなります。きれいなGUIではありませんが、問題を解決するのに役立ちます。

それをインストールするには:

Sudo apt-get install gnome-commander

多数のファイルを含むディレクトリを開きます。

gnome-commander /path-to-dir
4
Maythux

私はこれほど大きな図書館で個人的な経験はありませんが、イルカについてはよく聞いています。

Dolphinは、KubuntuなどのKDEディストリビューションで使用されるファイルマネージャーです。 Ubuntuデスクトップにインストールして正常に実行できますが、多くのKDE依存関係をダウンロードしてインストールする必要があるため、フットプリントは非常に大きくなる可能性があります。

Dolphin File Managerのダウンロード

別のアプローチは、フォトマネージャーを使用することです。このようなツールは、大規模なコレクションを表示するために最適化されると思います。

写真管理者にはかなりの選択肢がありますが、人気のあるものは次のとおりです。

ShotwellDigikam および F-Spot

1

Thunarファイルマネージャーで10,000のオーダーの画像を試しました。ローカルドライブにサムネイルをかなりすばやく表示し、ネットワークドライブも開きますが、非常に遅くなります。ただし、これよりも多くのファイルで試したことはありません。しかし、少なくとも、グラフィカルインターフェイスを損なうことなく、Nautilusよりもはるかに良い仕事をします

Sudo apt-get install thunar

デフォルトのファイルマネージャーにするスクリプトもあります(必要に応じて)。スクリプトは次の場所にあります。

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

0
Hazem

ターミナルを介してそのフォルダに移動し、gnome-open image.jpgまたはxdg-open image.jpgを実行し、gnome-image-viewerまたはより一般的にeye of gnome(eog)として知られている画像の1つを開く必要があります。次に、ヒットした場合 F9 または[表示]-> [画像ギャラリー]に移動して、サムネイルをプレビューできます。

0