Ajoy
Ajoy

Reputation: 560

Generate file names for proper sequential sorting under shell globing

I was generating a sequence of png images in my program, which files I was planning to get is passed through some tool that converts them to a video file. I am generating files one by one, in the proper sequence that I want them. I want to name them in such a way that the subsequent video conversion tool will take them in proper sequence under the file name globbing used by the shell ( I am using bash with Linux.). I tried adding a numeric sequence like 'scene1.png, scene10.png, scene12.png, but the shell doesn't sort globs numerically. I could pass a sorted list like this:

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

But some programs do their own globbing and don't use shells globbing ( like FFmpeg), and so this approach does not always work. so I am looking for a scheme of naming files that are guaranteed to be in sequence as per shell globbing rules.

Upvotes: 0

Views: 113

Answers (1)

SLePort
SLePort

Reputation: 15461

You may prefix your files with a zero padded integer.

This script emulates what ls * should output after renaming :

$ 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

Upvotes: 1

Related Questions