Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
148 views
in Technique[技术] by (71.8m points)

bash - Find files named by numbers in order but missing

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

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

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...