我有一大堆扫描的文件,我必须按照文件上印刷的日期以不同的方式进行排序......
- 位置
- 类型
- 粒度(“2017 年 7 月 1 日至 9 日之间”)
- 格式(“2017-07-02”、“2.7.17”、“02.07.17”...)
只有人类才能做到这一点。
我想象有某种 shell 脚本
- 迭代文件
- 以某种方式在另一个窗口中显示当前文件
- 让我以正确的格式输入日期
- 关闭图像显示
- 将日期添加到文件名前面。
在 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