浏览包含超过 100000 张图片的文件夹

浏览包含超过 100000 张图片的文件夹

我有一个文件夹,里面有 322000 张图片。当我使用任何文件管理器访问该文件夹时,它都会卡在加载状态。

我怎样才能去那里查看或删除图像?

答案1

自动将文件划分为(递归)目录,每个(子)文件夹/每个上级文件夹包含任意数量的文件

最简单、最有效的方法是使用脚本将文件重新组织到文件夹中,必要时甚至可以组织到不同层次的目录。这将使您的文件可浏览而不会阻塞 nautilus。

下面的脚本将为您完成此操作。它将创建包含任意数量文件的文件夹。如果这些文件夹超过(相同的)任意数量,则它们将被组织到子文件夹中,等等。换句话说,每个(子)级别将具有相同的最大文件/子目录数量,从而可以轻松浏览。

每个创建的文件夹都显示文件夹编号 + 创建的子级别数(例如 22_1 仅包含文件):

在此处输入图片描述

考试

我测试了一个包含 300,000 个文件的目录,将其重新组织成 (最多) 100 个文件的块,再将其组织到 (最多) 100 个文件夹的上级目录中,等等。
在我的系统上,这花费了不到一分钟的时间。将 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
    

笔记

该脚本(就其本身而言)只是创建了一个目录结构,其中每个级别都有定义数量的文件/文件夹。它不考虑任何按名称、日期或其他方式进行的组织。


编辑

根据评论中的要求,一个脚本在处理完文件后将文件移回一个平面目录。
用法几乎相同。对于目录,设置与第一个脚本相同的目录,但这似乎很明显。

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

笔记

正如评论中提到的,该脚本假定不存在名称冲突的风险,因为所有文件最初都来自同一个(平面)目录。

答案2

这是文件管理器的问题nautilus这是文件管理器在处理包含大量文件的目录时漏洞

在这种情况下,我建议您使用一些快速的文件管理器。gnome-commander它比 nautilus 快 5 到 6 倍,处理大量文件时,这个比率会更大。它的 GUI 不是很漂亮,但它应该可以帮助您解决问题。

安装方法:

sudo apt-get install gnome-commander

现在打开包含大量文件的目录:

gnome-commander /path-to-dir

答案3

我个人没有使用过那么大的图书馆,但我听说海豚的评价很好。

Dolphin 是 Kubuntu 等 KDE 发行版中使用的文件管理器。您可以在 Ubuntu 桌面上安装并运行它,尽管占用空间可能很大,因为它必须下载并安装大量 KDE 依赖项。

下载海豚文件管理器

另一种方法可能是使用照片管理器。我认为此类工具会针对显示大型收藏进行优化。

对于照片管理器来说,有很多替代方案,但其中比较流行的有以下几种:

肖特韦尔数码相机F 点

答案4

您可以通过终端进入该文件夹,执行gnome-open image.jpgxdg-open image.jpg,这将打开其中一个图像,gnome-image-viewer或更常见的图像eye of gnome(eog)。接下来,如果您点击F9或 转到查看 -> 图像库,您可以预览缩略图。

相关内容