One handy function I’ve added to .bashrc (so it is always available) under Cygwin (the LINUX command environment for Windows) works out the current working version of a document. It assumes that you keep copies that have a version number or date in the file name that will sort correctly.
# Opens the latest version of a file using the Windows default application
# Assumes that you have a range of files that can be identified using some for of prefix
# and that the last part of the file contains a version number or date that sorts in the correct order
# e.g. myfile-lots-of-rubbish-20090720-01.doc & myfile-lots-of-rubbish-20090723.01.doc
# Two arguments are required. The first is the PATH to search in. The 2nd is the shared file prefix (e.g. 'myfile-lots-of-rubbish-')
# Put single quotes around the arguments to prevent them from being GLOBed by the shell.
# Only searches in the GIVEN path, not subfolders.
# Use with an ALIAS to have an easy way of opening a specific file from the shell
function cyOpenLatest {
# We have to use find rather than ls because of shell expansion issues in the arguments (and problems with spaces in file/folder names)
res=`find "$1" -iname "${2}*" -type f -prune -printf '%f\n' | sort -r | head -1`
# Work out the file type from the .ext
ext=`echo $res | sed "s/.*\.//"`
# Add whatever you want to this list above the *)
case $ext in
doc*) TYPE="in Word" ;;
xls*) TYPE="in Excel" ;;
ppt*) TYPE="in PowerPoint" ;;
vsd*) TYPE="in Visio" ;;
*) TYPE="with Windows default application"
esac
if [ "$res" != "" ]; then
echo "Opening [$res] $TYPE"
cygstart "$res"
fi
}
You can use it with an alias like this:
alias gic="cyOpenLatest '$HOME/Documents/Here is a folder with a space or two/' 'a-document-'"
If you name your documents sensibly such as “a-document-2009-07-20.doc” or “a-document-v01.01.doc”, then the latest version of the file will be opened in the default application