The only real way to change this via GUI is to click Hide extension in the Finder Info window. Checking this changes the
com.apple.FinderInfo extended attribute, which you normally can't edit – at least not easily. We can however use a tool to do it for us.
For the below to work, you obviously need to have Show all file extensions unchecked in Finder's preferences.
AppleScript offers this functionality with the
set extension hidden command. You obviously need an
alias to a file object. We can get that, for example, though a dialog. Here's just a minimal working example.
tell application "Finder"
set some_file to (choose file)
set extension hidden of some_file to true
To reverse, just exchange
false here. The full call is then, for example:
set extension hidden of alias "Macintosh HD:Users:werner:Desktop:file.png" to true
You can run this straight from a script file too (thanks @DanielBeck for the addition):
on run argv
tell application "Finder" to set extension hidden of (POSIX file (first item of argv) as alias) to true
Save this as
filename.scpt and run it from the command line with:
osascript filename.scpt targetfile
Note: This is deprecated since Xcode 6.
If you have Xcode installed, you will get the
SetFile(1) binary, which does exactly what you want (and offers a few more functions related to file attributes):
SetFile -a E <file>
Show extension again:
SetFile -a e <file>