我正在尝试编写一个bash脚本,以保存以特定格式获取的文件的屏幕截图。我希望将它保存为一个数字(比如0001.jpeg),如果0001.jpeg已经存在,那么继续将它保存为0002.jpeg,以此类推。我知道,在使用ffmpeg时,当试图从视频中保存一个帧时,您可以得到它如何保存的格式:/path/to/place/%04d.ext,它可以做我想做的事情。我用我的代码做了尝试,使它看起来如下:
gnome-screenshot -w -B -f /home/usr/ws/images_to_process/$%04d.jpeg我也试过:
gnome-screenshot -w -B -f /home/usr/ws/images_to_process/$(%04d).jpeg以及:
gnome-screenshot -w -B -f /home/usr/ws/images_to_process/%04d.jpeg但那不管用。如你所见,我想不出有多大的可变性。有人知道怎么做吗?
谢谢
发布于 2017-10-26 06:54:52
您正在使用正确的数字格式生成外部文件名,但是您需要一个变量和一个printf来将“/home/usr/ws/ You _ to _process/%04d.jpeg”转换为"/home/usr/ws/images_ to _process/0001.jpeg“。
我制作了一个小脚本,它使用序列号创建文件,而不覆盖已经存在的文件。
#!/bin/bash
FILENAME="file_%04d.txt"
COUNTER=0
#Change true for your finish condition
while true; do
target=$(printf $FILENAME $COUNTER)
# If not exists file $tarjet
# -f check if exist a file
# ! not condition
if [ ! -f $target ]; then
touch $target
fi
# counter ++
COUNTER=$(($COUNTER + 1))
done您可以将“$target”改为“gnome-屏幕截图-w -B -f $target”,并为您的文件外名更改变量"target“。结果脚本是:
#!/bin/bash
FILENAME="/home/usr/ws/images_to_process/%04d.jpeg"
COUNTER=0
while true; do
target=$(printf $FILENAME $COUNTER)
if [ ! -f $target ]; then
gnome-screenshot -w -B -f $target
fi
COUNTER=$(($COUNTER + 1))
done我希望这个信息有用。
https://stackoverflow.com/questions/46943356
复制相似问题