[Tcl] Finding missing file(s)
Image you have 9000 files in a directory with a running sequence number like this:
photo.00001.jpg
photo.00002.jpg
...
photo.08999.jpg
photo.09000.jpg
photo.00001.jpg
photo.00002.jpg
...
photo.08999.jpg
photo.09000.jpg
I know I can count the number of files in the directory and realised there are 3 files missing
$ ls -1 photo.*.jpg | wc -l
8997
The question is: which 3 files
#! /usr/bin/tclsh
if { $argc != 3 } {
puts stderr "Usage: $argv0 <start> <end> <pad>"
exit 1
}
set start [lindex $argv 0]
set end [lindex $argv 1]
set pad [lindex $argv 2]
if { ! [string is integer $start] || ! [string is integer $end] || ! [string is integer $pad] } {
puts stderr "Error. <start> <end> <pad> have to be an integer"
exit 2
}
set all [lsort [glob -nocomplain *]]
for { set i $start } { $i <= $end } { incr i } {
set ipad [format "%0${pad}d" $i]
set rc [lsearch -regexp $all "^.*\\.$ipad\\..*\$"]
if { $rc < 0 } {
puts $i
}
}


0 Comments:
Post a Comment
<< Home