Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

suppose the files in a directory are named in numbers, how can I find which numbers are missing?

For example, in the current directory,

$ ls
0000.png 0002.png 0004.jpg 0005.png 0007.jpg

0001, 0003, and 0006 are missing.

thanks.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
137 views
Welcome To Ask or Share your Answers For Others

1 Answer

You can use a script like this in bash:

shopt -s extglob
shopt -s nullglob
arr=( +([0-9]).@(jpg|png) )

for (( i=10#${arr[0]%.*}; i<=10#${arr[-1]%.*}; i++ )); do
   printf -v f "%04d" $i;
   [[ ! -f "$(echo "$f".*)" ]] && echo "$f is missing"
done
0001 is missing
0003 is missing
0006 is missing

Many thanks to @gniourf_gniourf for his valuable comments below to fix this script.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...