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


8

322000枚の画像が入ったフォルダがあります。任意のファイルマネージャでそのフォルダに移動すると、ロードが停止します。

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


答えについてフィードバックを送っていただけませんか、それともうまくいきましたか?
Jacob Vlijm

もちろん。私はこのフォーラムが大好きで、専門家でいっぱいです。
user22005

そのフォルダのすべてのサムネイルを事前生成しますか?それにはaskubuntu.com/a/201997/350004を使用してください。
solsTiCe 2015

回答:


5

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

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

以下のスクリプトがそれを行います。任意の数のファイルを含むフォルダを作成します。これらのフォルダは、(同じ)任意の数などを超えると、サブフォルダに整理されます。各(サブ)レベルには同じ最大数のファイル/サブディレクトリがあり、簡単に閲覧できます。

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

ここに画像の説明を入力してください

テスト

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)

注意

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


これはあなたが言ったとおりに機能し、素晴らしいです。ありがとうございます。
user22005

それらすべてのファイルを1つのフォルダーに移動する方法はありますか?
user22005

@ user22005つまり、1つのフォルダに戻るということですか?私はそれがどこから来たのか理解していますが、そうです。追加のスクリプトが必要ですか?ちょうどそれを述べなさい:)。
Jacob Vlijm 2015

丁度。それらすべてのファイルを元の場所に戻すスクリプトが必要です。
user22005

@ user22005確認:ディレクトリは最初は「フラット」でしたか(サブディレクトリなし)?
Jacob Vlijm 2015

4

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

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

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

sudo apt-get install gnome-commander

次に、多数のファイルがあるディレクトリを開きます。

gnome-commander /path-to-dir

これでは、画像の表示と削除に必要なサムネイルビューが表示されませんでした。
user22005

1

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

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

Dolphin File Managerをダウンロード

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

フォトマネージャーにはかなりの数の選択肢がありますが、人気のあるものは次のとおりです。

ShotwellDigikamF-Spot


1

10,000枚程度の画像でThunarファイルマネージャーを試してみました。ローカルドライブにサムネイルをかなり高速に表示し、ネットワークドライブを開きますが、速度はかなり遅くなります。しかし、私はそれをより多くのファイルに対して試していません。しかし、少なくとも、グラフィカルインターフェイスを損なうことなく、Nautilusよりもはるかに優れています。

sudo apt-get install thunar

デフォルトのファイルマネージャにするスクリプトもあります(必要な場合)。あなたはここでスクリプトを見つけることができます:

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


0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.