ogr2ogr -t_srs "+proj=utm +zone=17 +datum=NAD83" -s_srs WGS84 outfile-utm.shp infile-geo.shp
Note the weird output-first convention. Check your UTM zone and datum. This approach seem to work for GPS tracks saved as GPX and converted using gpx2shp.
I do a lot of work with UTM survey locations, and quite often I want to have them stored in my GPS. I used to rely on a powerful but oh-so-clunky Windows application called Corpscon, but I really didn’t want to be limited to Windows machines, and Corpscon really only works for North America.
And then I discovered proj. While it has a pretty hideous command-line syntax, the output matches Corpscon to the sixth decimal place. Say you had a waypoint stored (for Southern Ontario, UTM Zone 17, NAD83) like this:
4843744 443025 Goderich
that is, UTM northing,easting, followed by label.
To convert this to geographic coordinates, you’d invoke invproj (which goes from UTM to geographic) like this:
invproj -E -r -f "%.6f" +proj=utm +zone=17 +datum=NAD83
and it would spit out:
4843744 443025 -81.707611 43.744546 Goderich
Columns 3 and 4 are the geographic coordinates – 43° 44′ 40.37″ N, 81° 42′ 27.40″ W in more familiar notation – which is in fact a location between Brock St and Newgate St in Goderich, Ontario.
With a Unix box, proj and gpsbabel, I’m set for all my coordinate conversions.