将文件名保存为递增数字

时间:2017-10-25 23:06:11

标签: linux bash

我正在尝试编写一个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

但那并没有奏效。正如你所看到的,我无法想到很多变化。有谁知道怎么做?

由于

1 个答案:

答案 0 :(得分:2)

您使用正确的数字格式来生成文件名,但您需要一个变量和一个printf来将“/home/usr/ws/images_to_process/%04d.jpeg”翻译为“/ home / usr / ws” /images_to_process/0001.jpeg“

我制作了一个小脚本,使用序列号创建文件,而不会覆盖现有文件。

             .eachLike("attributes")
                .eachKeyMappedToAnArrayLike("sale")
                  .stringType("new sale")
                  .closeObject()
                .closeArray()
            .closeObject()
            .closeArray();

您可以更改“gnome-screenshot -w -B -f $ target”的“touch $ target” 和你的outfile名称的变量“target”。结果脚本是:

  #!/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

我希望这些信息很有用。