在shell globing下生成文件名以进行正确的顺序排序

时间:2016-03-27 10:08:14

标签: linux bash shell sorting

我在我的程序中生成了一系列png图像,我计划得到的文件通过一些工具传递给视频文件。我按照我想要的正确顺序逐个生成文件。我想以这样一种方式命名它们,即随后的视频转换工具将按照shell使用的文件名globbing以正确的顺序进行命名(我正在使用Linux的bash。)。我尝试添加像' scene1.png,scene10.png,scene12.png这样的数字序列,但是shell并没有用数字排序整数。我可以通过这样的排序列表:

convert -antialias -delay 1x10 $(ls povs/*.png | sort -V) mymovie.mp4

但是有些程序会使用自己的globbing并且不使用shell(如FFmpeg),因此这种方法并不总是有效。所以我正在寻找一种命名文件的方案,这些文件按照shell globbing规则保证按顺序排列。

1 个答案:

答案 0 :(得分:1)

您可以在文件前加零填充整数。

此脚本模拟重命名后ls *应输出的内容:

$ for i in {1..12};do
$   printf '%05d_%s\n' ${i} file${i}
$ done;

00000_file0
00001_file1
00002_file2
00003_file3
00004_file4
00005_file5
00006_file6
00007_file7
00008_file8
00009_file9
00010_file10
00011_file11