首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文件名保存为递增号

将文件名保存为递增号
EN

Stack Overflow用户
提问于 2017-10-25 23:06:11
回答 1查看 271关注 0票数 2

我正在尝试编写一个bash脚本,以保存以特定格式获取的文件的屏幕截图。我希望将它保存为一个数字(比如0001.jpeg),如果0001.jpeg已经存在,那么继续将它保存为0002.jpeg,以此类推。我知道,在使用ffmpeg时,当试图从视频中保存一个帧时,您可以得到它如何保存的格式:/path/to/place/%04d.ext,它可以做我想做的事情。我用我的代码做了尝试,使它看起来如下:

代码语言:javascript
复制
gnome-screenshot -w -B -f /home/usr/ws/images_to_process/$%04d.jpeg

我也试过:

代码语言:javascript
复制
gnome-screenshot -w -B -f /home/usr/ws/images_to_process/$(%04d).jpeg

以及:

代码语言:javascript
复制
gnome-screenshot -w -B -f /home/usr/ws/images_to_process/%04d.jpeg

但那不管用。如你所见,我想不出有多大的可变性。有人知道怎么做吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-26 06:54:52

您正在使用正确的数字格式生成外部文件名,但是您需要一个变量和一个printf来将“/home/usr/ws/ You _ to _process/%04d.jpeg”转换为"/home/usr/ws/images_ to _process/0001.jpeg“。

我制作了一个小脚本,它使用序列号创建文件,而不覆盖已经存在的文件。

代码语言:javascript
复制
  #!/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“。结果脚本是:

代码语言:javascript
复制
  #!/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

我希望这个信息有用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46943356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档