浏览具有超过100000张图像的文件夹


8

我有一个包含322000张图像的文件夹。当我与任何文件管理器一起进入该文件夹时,它会卡在加载中。

我如何去那里查看或删除图像?


您能否对尝试过的答案给出一些反馈,它是否对您有用?
Jacob Vlijm 2015年

当然。我喜欢这个论坛,那里挤满了专业人员。
user22005年

预先生成该文件夹的所有缩略图?为此,请使用askubuntu.com/a/201997/350004
solsTiCe 2015年

Answers:


5

自动将文件分成一个(递归)目录,每个(子)文件夹中有任意数量的文件,每个上级文件夹中有多个文件夹

最简单,最有效的恕我直言的方法是让脚本将文件重新组织到文件夹中,必要时甚至在目录级别的不同层上也是如此。这将使您的文件可浏览而不会窒息。

下面的脚本将为您完成此任务。它将创建带有任意数量文件的文件夹。如果这些文件夹超过(相同)任意数量,则将这些文件夹组织为子文件夹。每个(子)级别将具有相同的最大文件/子目录数量,从而使浏览变得容易。

每个创建的文件夹都显示文件夹号+创建的子级别数(例如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)

注意

如注释中所述,脚本假定没有名称冲突的风险,因为所有文件最初都来自同一(平坦)目录。


就像您说的那样,它的工作原理非常棒。谢谢你,先生。
user22005年

有没有办法将所有这些文件移动到一个文件夹中?
user22005年

@ user22005您的意思是回到一个文件夹?我知道那是他们来自哪里?但绝对是。您是否需要其他脚本?只需提一下:)。
Jacob Vlijm 2015年

究竟。我需要一个脚本来将所有这些文件移回原处。
user22005年

@ user22005确保:该目录最初是否为“平坦”(无子目录)?
Jacob Vlijm 2015年

4

nautilus当使用包含大量文件的目录时,这是文件管理器中的问题,此bug中对此进行了描述。

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

要安装它:

sudo apt-get install gnome-commander

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

gnome-commander /path-to-dir

这并没有给我查看和删除图像所需的缩略图视图。
user22005年

1

我没有这么大的图书馆任何个人经验,但是我对海豚的了解很好。

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

下载海豚文件管理器

另一种方法可能是使用光电管理器。我认为这样的工具将被优化以显示大集合。

对于光电管理器,有很多替代方案,但是很受欢迎的几种方案是:

肖特韦尔DigikamF点


1

我尝试了Thunar文件管理器,其图像数量大约为10,000。在本地驱动器上相当快地显示缩略图,并且打开网络驱动器也相当快,但速度要慢得多。不过,我还没有尝试使用更多的文件。但是至少,在不损害图形界面的情况下,它比Nautilus更好。

sudo apt-get install thunar

还有一个脚本使其成为您的默认文件管理器(如果您喜欢)。您可以在此处找到脚本:

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


0

您可以通过终端进入该文件夹,do gnome-open image.jpgxdg-open image.jpg,该文件夹应打开一个gnome-image-viewer或多个带有eye of gnome(eog)的图像。接下来,如果您点击F9或转到查看->图片库,则可以预览缩略图。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.