Cygwin BASH function to open the latest version of a document

Published: | by Julian Knight Reading time ~2 min.
📖 Posts | 📎 Development, Windows | 🔖 bash, batch, cygwin, scripting

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

Technorati :
Diigo Tag Search :

comments powered by Disqus