1 2# recursive directory listing, a bit like "ls -lR" 3 proc listall {dirs} { 4 while {[llength $dirs] > 0} { 5 set dir [lindex $dirs 0] 6 set dirs [lrange $dirs 1 end] 7 puts "\n$dir:" 8 set entries [glob -nocomplain [file join $dir *]] 9 #if {[llength $entries] > 0} { puts "" } 10 foreach path [lsort $entries] { 11 if {[file isdir $path]} { 12 set len " " 13 set tim " dir" 14 set suf "/" 15 lappend dirs $path 16 } else { 17 set len [format %10d [file size $path]] 18 set tim [clock format [file mtime $path] -format {%Y/%m/%d %H:%M:%S}] 19 set suf "" 20 } 21 puts "$len $tim [file tail $path]$suf" 22 } 23 } 24 puts "" 25 } 26 27set fname [lindex $argv 0] 28if {[llength $argv] != 1 || ![file exists $fname]} { 29 puts stderr "Usage: $argv0 file" 30 exit 1 31} 32 33vfs::mk4::Mount $fname $fname -readonly 34listall $fname 35vfs::unmount $fname 36