set files [glob -types d *.dump] foreach f $files { set out [open [string range $f 0 [expr [string last "." $f]-1]] w] fconfigure $out -blocking false -buffering full -buffersize 512000 -translation binary set files2 [list] lappend files2 [glob -nocomplain -types f [string range $f 0 [expr [string last "." $f]-1]].dump/*] lappend files2 [glob -nocomplain -types f [string range $f 0 [expr [string last "." $f]-1]].dump/*/*] lappend files2 [glob -nocomplain -types f [string range $f 0 [expr [string last "." $f]-1]].dump/*/*/*] lappend files2 [glob -nocomplain -types f [string range $f 0 [expr [string last "." $f]-1]].dump/*/*/*/*] lappend files2 [glob -nocomplain -types f [string range $f 0 [expr [string last "." $f]-1]].dump/*/*/*/*/*] lappend files2 [glob -nocomplain -types f [string range $f 0 [expr [string last "." $f]-1]].dump/*/*/*/*/*/*] lappend files2 [glob -nocomplain -types f [string range $f 0 [expr [string last "." $f]-1]].dump/*/*/*/*/*/*/*] lappend files2 [glob -nocomplain -types f [string range $f 0 [expr [string last "." $f]-1]].dump/*/*/*/*/*/*/*/*] set tmpfiles [list] foreach f2 $files2 { foreach f0 $f2 { lappend tmpfiles $f0 } } set files2 [lsort -dictionary $tmpfiles] set buff "" set count 0 foreach f2 $files2 { if {$f2 ne ""} { append buff "[string range $f2 [expr [string first "/" $f2]+1] end]\x00[binary format I [file size $f2]]" incr count } } puts -nonewline $out [binary format I [expr [string length $buff]+7]] puts -nonewline $out [string range [binary format I $count] 1 3] puts -nonewline $out $buff foreach f2 $files2 { if {$f2 ne ""} { set in [open $f2 r] fconfigure $in -blocking false -buffering none -translation binary puts -nonewline $out [read $in [file size $f2]] close $in puts "$f2 packed" } } close $out }