2007-Dec-03 This is a tool I wrote when I went to automatize file renaming. -- Sarnold
For example, you can prepend each file name by a prefix like this:
tfrn head "The Beatles" *.mp3
this is useful for multimedia files which sometimes have cryptic names like "NoArtist - Track01.mp3", "IMG_5238.jpg", and so on... And it allows renaming with regexp patterns, which is so cool and funny... Better test it before to use it!
The script
#! /usr/bin/env tclsh
proc lfetch {lst} {
upvar 1 $lst data
return [nfetch data 1]
}
proc nfetch {lst n} {
upvar 1 $lst data
set x [lrange $data 0 [expr {$n-1}]]
set data [lrange $data $n end]
return $x
}
proc usage {} {
puts {usage: tfrn command args... file1 ?file2 ... filen?
"Tcl File ReNamer v1.0" renames massively files.
trfn help:
prints this message
trfn head "header":
prepend each file name with "header"
trfn regexp "search" "replace":
replaces matching "search" by "replace" using Tcl regsub command
This is free software (c) Stephane Arnold 2007 (http://sarnold.free.fr/)}
exit 0
}
interp alias {} Rename {} file rename
proc debug {} {
proc Rename {a b} {
puts [list rename $a $b]
file rename $a $b
}
}
# subcommand
set subcmd [lfetch argv]
switch -glob -- $subcmd {
head* {
set head [lfetch argv]
foreach f $argv {
Rename $f $head$f
}
}
reg* {
foreach {start replace} [nfetch argv 2] break
puts [list $start $replace]
foreach f $argv {
Rename $f [regsub -all -- $start $f $replace]
}
}
help - default {
usage
}
}