MacOSX Compact Sparse Image…

One useful OS X feature is the ability to create disk images. A disk image is a single file that, when double-clicked, appears like a typical hard drive to the operating system. (Most software you download comes on a disk image.) Disk images a great way to store related files that you don’t need to use often, as they can be “out of sight” until you need them. They’re also useful if you want to store something securely, as you can create encrypted disk images that require a password to mount.

There are essentially two types of disk images—a normal disk image and a sparse disk image. With a normal disk image, the disk image will consume as much drive space as its size, even when empty—i.e. a 40MB normal disk image requires 40MB of drive space, even if you’ve never used it. Sparse disk images, on the other hand, are disk image files that require just as much space as their contents require. So a 40MB sparse disk image will only need 40MB of drive space if you’ve saved 40MB of data onto it. The disk image will grow automatically as space is required.

What isn’t so obvious is that a sparse image won’t shrink automatically. Check out the link for a handy article on how to compact a sparse image.

http://www.macworld.com/weblogs/macosxhints/2007/06/compactsparse/index.php

Argument list too long – xargs is the solution…

If you’re dealing with a lot of files and get messages like:

mv *.* tmp/
-bash: /bin/mv: Argument list too long

then you need xargs. For example,

Moving Files: 

To move vast number of files from /a/b to /c/d do:

ls . | xargs -i mv /a/b/{} /c/d/{}

The -i argument to xargs says fill in all the {} expressions on the right hand side of the pipe with all the values being generated on the left hand side of the pipe. Or use:

find . -name “thisname-*” | xargs -i mv {} thisname/{}

 Deleting Files

find . -type f -name “*” -print|xargs rm

E.g. http://www.unixreview.com/documents/s=8274/sam0306g/

Argument list too long – xargs is the solution…

 If you’re dealing with a lot of files and get messages like:

mv *.* tmp/
-bash: /bin/mv: Argument list too long

then you need xargs.

xargs is a command of the Unix and most Unix-like operating systems. It becomes useful when you want to pass a large amount of arguments to a command. In that case xargs will break the list of arguments in sublists large enough to be acceptable.

E.g. http://www.unixreview.com/documents/s=8274/sam0306g/