【问题标题】:Add leading zeros twice in filename在文件名中添加两次前导零
【发布时间】:2017-04-07 16:01:16
【问题描述】:

我的文件名(来自图像图块)由两个下划线分隔的数字组成,例如

142_27.jpg
7_39.jpg
1_120.jpg

我如何(在 linux 中)为这两个数字添加前导零?我想要的是文件名

142_027.jpg
007_039.jpg
001_120.jpg

【问题讨论】:

  • 您要重命名文件或更改文件中的文本?
  • 重命名文件。我发现了很多在文件名开头添加零的示例,但这里我希望在两个位置(开头和下划线之后)添加零。

标签: linux bash rename leading-zero


【解决方案1】:

您可以使用单个awk 命令来格式化带有前导零的文件名,使用printf

for f in *.jpg; do
   echo mv "$f" $(awk -F '[_.]' '{printf "%03d_%03d.%s", $1, $2, $3}' <<< "$f")
done

这将输出:

mv 142_27.jpg 142_027.jpg
mv 1_120.jpg 001_120.jpg
mv 7_39.jpg 007_039.jpg

一旦您对输出感到满意,请在 mv 命令之前删除 echo

【讨论】:

    【解决方案2】:

    使用基于perlrename 命令

    $ touch 142_27.jpg 7_39.jpg 1_120.jpg
    $ rename -n 's/\d+/sprintf "%03d", $&/ge' *.jpg
    rename(1_120.jpg, 001_120.jpg)
    rename(142_27.jpg, 142_027.jpg)
    rename(7_39.jpg, 007_039.jpg)
    

    -n 选项用于试运行,删除它以进行实际重命名


    如果基于perlrename 命令不可用:

    $ for f in *.jpg; do echo mv "$f" "$(echo "$f" | perl -pe 's/\d+/sprintf "%03d", $&/ge')"; done
    mv 1_120.jpg 001_120.jpg
    mv 142_27.jpg 142_027.jpg
    mv 7_39.jpg 007_039.jpg
    

    一旦空运行似乎没问题,就将 echo mv 更改为 mv

    【讨论】:

      【解决方案3】:

      您可以使用 sed 使用一个小的 shell 脚本来完成:

      for i in *.jpg;
      do
          new=`echo "$i" | sed -n -e '{ s/^\([0-9]\{0,3\}\)_\([0-9]\{0,3\}\).jpg/000\1_000\2.jpg/ };
          {s/\([0-9]*\)\([0-9]\{3\}\)_\([0-9]*\)\([0-9]\{3\}\).jpg/\2_\4.jpg/p };'`;
          mv "$i" "$new";
      done;
      

      默认情况下,我首先在上述位置添加三个前导零,然后在所述位置的开头根据需要切断尽可能多的数字,以便只剩下 3 个数字

      【讨论】:

        【解决方案4】:

        使用 bash 替换(a,b)

        windows(bash)

        for f in *.jpg;do a=${f%_*};b=${f#*_};mv $f $(printf "%03d_%07s" $a $b);done
        

        Linux

        for f in *.jpg;do a=${f%_*};b=${f#*_};b=${b%.*};mv $f $(printf "%03d_%03d".jpg $a $b);done
        

        【讨论】:

          猜你喜欢
          • 2012-02-13
          • 1970-01-01
          • 1970-01-01
          • 2012-10-26
          • 1970-01-01
          • 2014-07-12
          • 1970-01-01
          • 2021-01-19
          相关资源
          最近更新 更多