$ for i in * ; do mv $i $(echo $i | sed -e "s/January/01-/" -e "s/February/02-/" -e "s/March/03-/" -e "s/April/04-/" -e "s/May/05-/" -e "s/June/06-/" -e "s/July/07-/" -e "s/August/08-/" -e "s/September/09-/" -e "s/October/10-/" -e "s/November/11-/" -e "s/December/12-/") ; done
"Good, Watson, good! But not, if I may say so, quite good enough!" -- Sherlock Holmes in The Valley of Fear
Indeed, we'd be better off with a date format like yyyymm. Let's swap the position of the month and date, removing the hyphen at the same time:$ for i in * ; do mv $i $(echo $i | sed "s/\(.*\)-\(.*\)/\2\1/") ; done
Now the files are named 200301, 201103, etc.
RenameWand also makes short work of file renaming operations, especially involving dates. The previous example becomes:$ java -jar RenameWand.jar "<month>-<year>" "<year><month>"Files can even be renamed into subdirectories based on dates in their names (e.g., "foo jun 2011" becomes 2011/jun/foo):
$ java -jar RenameWand.jar "<a> <month> <year>" "<year>/<month>/<a>"
/nix | May 26, 2011