如何在 Nautilus 中重新生成特定缩略图?

如何在 Nautilus 中重新生成特定缩略图?

有时我会裁剪 PDF 以便只阅读一页,而不是扫描两页。但是,nautilus 会保留显示前一页的旧缩略图。

我知道我可以删除隐藏的缩略图文件夹,但我想知道如何重新生成仅有的一个特定的缩略图。F5 没有帮助。

答案1

根据 freedesktop 文档缩略图管理标准 。如果 mtime(修改时间)缩略图中的 mtime 低于原始文件中的 mtime。

  1. 检测修改

一个重要的事情是确保缩略图显示的信息与原始图像相同,只是缩小了尺寸。为了实现这一点,我们使用存储在必需的“Thumb::MTime”键中的修改时间,并检查它是否等于原始图像的当前修改时间。如果不相等,我们必须重新创建缩略图。

例2.检查修改的算法。

如果(file.mtime != thumb.MTime){重新创建缩略图();}

仅进行 file.mtime > thumb.MTime 检查是不够的。如果用户将另一个文件移到原始文件上,而 mtime 发生了变化,但实际上低于缩略图存储的 mtime,我们将无法识别此修改。

为了实现这一点...你可以尝试一点Nautilus 脚本使用以下命令将原始文件中的 mtime 设置为当前时间触碰命令。

1)创建脚本。打开终端窗口Ctrl+ Alt+T并输入:

对于 Ubuntu 12.04 和 12.10

  • nano ~/.gnome2/nautilus-scripts/Regenerate-Thumbnail

对于 Ubuntu 13.04 及以上版本

  • nano ~/.local/share/nautilus/scripts/Regenerate-Thumbnail

2)脚本的内容。

#!/bin/bash

BAKIFS=$IFS
IFS=$'\n'

for FILE in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS; do
      touch -m "$FILE"
done

IFS=$BAKIFS

要保存 nano 中的更改.. Ctrl+ OEnter然后Ctrl+ X

3)使脚本可执行。

对于 Ubuntu 12.04 和 12.10

  • chmod +x ~/.gnome2/nautilus-scripts/Regenerate-Thumbnail

对于 Ubuntu 13.04 及以上版本

  • chmod +x ~/.local/share/nautilus/scripts/Regenerate-Thumbnail

4)要测试脚本,您可以打开 nautilus,选择一个或多个文件,右键单击并转到 脚本 > 重新生成缩略图

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

希望这可以帮助。

答案2

我知道这是一个老问题,但是......有时缩略图会卡住,并且没有任何技巧touch -m可以mv使其再生。

编写这个简单的脚本(感谢对此答案),我们称之为find-gnome-thumbnail

#! /bin/bash 
#
fn=$(echo -n "$1" | md5sum | awk '{print $1}')
find $HOME/.cache/ -name "$fn*" 2> /dev/null

并向其提供您要确定缩略图位置的文件的规范名称。更好的方法是选择 nautilus 中的文件,执行ctrlC,然后在终端中写入 find-gnome-thumbnail '(使用空格和开头的单引号),然后shiftctrlV; 添加结束引号,您将得到如下内容:

 % ./find-gnome-thumbnail 'file:///home/romano/tmp/0101_IM_3026506.pdf' 
/home/romano/.cache/thumbnails/large/d090cf90d2ac3f8127f62043f06b66df.png

现在您可以删除有问题的缩略图,它将重新生成(如果没有单独生成,请按 F5)。复制粘贴技巧可以处理奇怪的字符转换:

 % ./find-gnome-thumbnail 'file:///home/romano/tmp/lalla%20(copy).pdf'
 /home/romano/.cache/thumbnails/large/28864dd40fab6d4982e1b103365574da.png

有时,如果您使用 重命名文件mv,脚本会失败,我不知道为什么 --- 但大多数情况下都没问题。此外,手动删除缩略图不会立即重新生成它 --- 再次,我在这里不知所措。

答案3

简化答案(基于@Roman Raguet)

  1. 打开终端
  2. 转到文件所在的文件夹,例如/home/me/myimages
  3. 执行touch -m

    • 例如,可以将其设置为单个文件touch -m myfile.jpg
    • 或者所有文件,touch -m *

现在缩略图应该在你的 Nautilus 中重新生成。

答案4

就我而言touch -m *touch *仅重新生成所有但仍然没有重新生成有问题的图像。md5sum在中也找不到这些图像~/.cache/

然后我进行实验,将所有“正常”的图像复制到其他目录进行备份,在该文件夹中仅留下 3 个有问题的图像,并用它strace来调试它打开的路径,它是否~/.cache/thumbnails像其他答案提到的那样打开?(下面的日志是我第二次尝试使用 1 张有问题的图像):

xb@dnxb:~/.cache/thumbnails/normal$ strace -f -e open,openat nautilus '<My Directory>' |& grep -ni thumbnail
...
1428:[pid 30799] openat(AT_FDCWD, "/home/xiaobai/.cache/thumbnails/fail/gnome-thumbnail-factory/d3b419c7166b51189307c0c0c9e1e559.png", O_RDONLY) = 36
^C

我发现里面的 3 张图片~/.cache/thumbnails/fail/有不同的 md5sum,难怪 md5sum 技巧不起作用。

然后我尝试eog <original image path>“侏儒之眼”strace程序)思考并让我感到惊讶的是,当第二次尝试使用此日志时,缩略图在 Nautilus 中重新生成:

xb@dnxb:~/.cache/thumbnails/normal$ strace -f -e open,openat nautilus '<My Directory>' |& gi thumbnail
...
1422:[pid 30904] openat(AT_FDCWD, "/home/xiaobai/.cache/thumbnails/normal/d3b419c7166b51189307c0c0c9e1e559.png", O_RDONLY) = 36
...
1428:[pid 30909] openat(AT_FDCWD, "/home/xiaobai/.cache/thumbnails/normal/d3b419c7166b51189307c0c0c9e1e559.png", O_RDONLY) = 35
...
^C
xb@dnxb:~/.cache/thumbnails/normal$ 

具有相同 md5 文件名的缩略图~/.cache/thumbnails/normal/移入~/.cache/thumbnails/fail/

eog *因此,从终端运行命令也可以解决此问题(注意:我touch -m *之前做过touch *,并strace nautilus查看了图像结果)。对于OP问题,可以使用eog <image path>

相关内容