Quickly eject all disks from the command line

Sep 05, '12 07:30:00AM

Contributed by: juanfal

Instead of using the following to eject all disks:

osascript -e 'tell "Finder" to eject (every disk)' 
I've found that this is much faster:
find /Volumes -maxdepth 1 -not -user root -print0 | xargs -0 diskutil eject 
Run this command from Terminal, or in a shell script, to eject all your local disks.

To eject network volumes, this code works:
find /Volumes -maxdepth 1 -not -user root -print0 | xargs -0 umount 
[kirkmc adds: The problem with this hint is that each line of code works for different types of volumes. If you have both local and network volumes, you need to use both; you could, of course, stick them together with a semi-colon separating them so they are, in effect, a single command.. In my tests, it's not really faster than the osascript code above, but I'm posting it because some may find it useful. If you have different results in speed or efficacy, please post in the comments.]

Comments (2)


Mac OS X Hints
http://hints.macworld.com/article.php?story=20120901094847629