通过终端命令自动打开扫描仪中新保存的图像文件

通过终端命令自动打开扫描仪中新保存的图像文件

我想从终端启动扫描并查看图像自动地完成后。如果不知道保存的文件名,我该怎么做?我目前在笔记本上本地运行 Ubuntu 16.04 LTS,该笔记本通过 USB 连接到扫描仪。

我写了以下终端命令;但是问题是,如果扫描过程中超过一分钟,Eye of Gnome 就无法找到图像文件,并且我会收到一条错误消息:

scanimage --format=tiff > ~/Pictures/$(date +%Y%m%d_%H%M).tiff && sleep 5 ; eog --fullscreen ~/Pictures/$(date +%Y%m%d_%H%M).tiff

例如,图像文件将保存为20170128_2314.tiff,但 Eye of Gnome 或 EOG 将搜索 ,20170128_2315.tiff从而导致错误。并且根据扫描仪分辨率设置,从头到尾扫描可能需要 1-5 分钟。

图像文件当前正在保存到我的主目录 ~/Pictures 文件夹中。

任何帮助或意见都将不胜感激。

答案1

使用默认应用程序打开目录中的最新文件

下面的脚本将打开~/Pictures目录中的最新文件。与文件命名方式或脚本运行时间无关。

当然,您可以设置任何其他目录来使用,或者任何应用程序来打开该文件。

剧本

#!/usr/bin/env python3
import subprocess
import os
from operator import itemgetter

dr = os.path.join(os.environ["HOME"], "Pictures")
files = [os.path.join(dr, f) for f in os.listdir(dr)]
latest = sorted([[f, os.path.getmtime(f)] for f in files], key=itemgetter(1))[-1][0]
subprocess.Popen(["xdg-open", latest])

使用

  1. 将脚本复制到一个空文件中,另存为open_latest.py
  2. 运行:

    python3 /path/to/open_latest.py
    

    并且最新的文件将通过其默认应用程序打开。

笔记

  • 要使用其他目录,请将行

    dr = os.path.join(os.environ["HOME"], "Afbeeldingen")
    

    例如

    dr = "/path/to/dir"
    

    但不要使用像 这样的路径$HOME,这在 python 中不起作用

  • 要使用特定应用程序而非默认应用程序,请更改以下行:

    subprocess.Popen(["xdg-open", latest])
    

    例如

    subprocess.Popen(["eog", latest])
    

解释

剧本:

  • 定义目录中的图片目录$HOME

    dr = os.path.join(os.environ["HOME"], "Pictures")
    
  • 列出文件:

    files = [os.path.join(dr, f) for f in os.listdir(dr)]
    
  • 按修改日期对文件进行排序(os.path.getmtime(f)),获取最新的:

    latest = sorted([[f, os.path.getmtime(f)] for f in files], key=itemgetter(1))[-1][0]
    
  • 使用默认应用程序打开文件:

    subprocess.Popen(["eog", latest])
    

答案2

为什么不在将文件名发送到之前将其保存到变量中scanimage

filename=~/Pictures/$(date +%Y%m%d_%H%M).tiff
scanimage --format=tiff > "$filename" && sleep 5
eog --fullscreen "$filename"

(为了便于阅读,我将其分成多行,但您可以;像之前一样组合这些命令。)

相关内容