43 lines
765 B
Shell
Executable file
43 lines
765 B
Shell
Executable file
# rename : renames the string descriptor used in numbered series.
|
|
|
|
# Usage:
|
|
|
|
# > rename 100.md bar
|
|
# or
|
|
# > rename 100.foo.md bar
|
|
|
|
# is equivalent to:
|
|
# > mv 100.md 100.bar.md
|
|
# > mv 100.foo.md 100.bar.md
|
|
|
|
# split the args by a newline so that awk reads them as separate "records"
|
|
mvcmd=`echo "$1
|
|
$2" |
|
|
awk '
|
|
BEGIN {
|
|
# Builtin variable, "field seperator". The neatness of this is the main reason
|
|
# I use awk to parse the filename.
|
|
FS="."
|
|
oldname = ""
|
|
num = ""
|
|
ext = ""
|
|
newname = ""
|
|
}
|
|
|
|
NR == 1 {
|
|
oldname = $0
|
|
num = $1
|
|
# important that this is the last field, not numbered, to allow for a file
|
|
# without a string descriptor.
|
|
ext = $NF
|
|
}
|
|
|
|
NR == 2 {
|
|
newname = sprintf("%s.%s.%s", num, $0, ext)
|
|
}
|
|
|
|
END {
|
|
print oldname, newname
|
|
}
|
|
'`
|
|
mv $mvcmd
|