有时我会裁剪 PDF 以便只阅读一页,而不是扫描两页。但是,nautilus 会保留显示前一页的旧缩略图。
我知道我可以删除隐藏的缩略图文件夹,但我想知道如何重新生成仅有的一个特定的缩略图。F5 没有帮助。
答案1
根据 freedesktop 文档缩略图管理标准 。如果 mtime(修改时间)缩略图中的 mtime 低于原始文件中的 mtime。
- 检测修改
一个重要的事情是确保缩略图显示的信息与原始图像相同,只是缩小了尺寸。为了实现这一点,我们使用存储在必需的“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+ O,Enter然后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)
- 打开终端
- 转到文件所在的文件夹,例如
/home/me/myimages
执行
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>
。