从外壳显示和隐藏图像

从外壳显示和隐藏图像

我有一大堆扫描的文件,我必须按照文件上印刷的日期以不同的方式进行排序......

  • 位置
  • 类型
  • 粒度(“2017 年 7 月 1 日至 9 日之间”)
  • 格式(“2017-07-02”、“2.7.17”、“02.07.17”...)

只有人类才能做到这一点。

我想象有某种 shell 脚本

  1. 迭代文件
  2. 以某种方式在另一个窗口中显示当前文件
  3. 让我以正确的格式输入日期
  4. 关闭图像显示
  5. 将日期添加到文件名前面。

在 bash 中,第 1 点很容易:

    for scanFile in *.jpg; do echo "MAGIC"; done

第 3 点和第 5 点也很简单:

    read -n 8 -p "Please enter date in YYYYMMDD: " theDate
    mv $scanfile $theDate--$scanfile

但是数字 2. 和 4. 怎么样?如何才能从 bash 显示图像,而不会失去对终端窗口的焦点,并且能够随意关闭它?

如果它与 cygwin shell 一起工作,那就更好了,但这不是必须的。

答案1

ImageMagickdisplay可以解决这个问题。

我启动一个普通的 cygwin 终端,将其放大到屏幕的左半部分,然后通过以下方式启动 X 会话

startx /usr/bin/fvwm2 &

我移动/调整了黑色 X 窗口的大小,使其适合屏幕的右半部分,并记下它在 shell 中提到的尺寸。

然后,我要做的就是启动 ImageMagick 的display命令并相应地将其杀死。

这是我即时编写的代码块:

staticYear="2019"
for scanFile in YYYY-MM-DD--*.png; do 
  display -display :0 -resize 952x1000 $scanFile &
  read -n 4 -p "Please enter date in MMDD: " theDate
  kill $(pidof display)
  if [ -z "$theDate" ]
  then
    echo -e "\nCancelling."
    break
  elif [ "0000" = "$theDate" ]
  then
    echo -e "\nSkipping that one."
  else
    echo -e "\nThe date: $theDate"
    echo "New filename: $staticYear$theDate-$scanFile"
    mv $scanFile "$staticYear$theDate-$scanFile"
  fi
done

相关内容