e - Extract Any Archive

What?

With this little tool you can extract almost any archive in Linux so you do not need to remember which tool and what command lines are necessary.

Why?

I got fed up with the sheer impossible number of compression formats out there. I am an avid linux command line user, but remembering 20 different commands with strange switches to get to the juicy content of a compressed files is too much for me.

Therefore I have just happily spent a few hours of my life to write the application e that identifies which extraction tool to call with what parameter in order to save me precious seconds of rereading forgotten manpages.

Usage

This marvelous extraction tool works like this:

  • Extract a zip file:
    e file.zip
  • Extract a rar file:
    e file.rar
  • Extract several archives, one after another:
    e a.tar.gz b.tar.bz2 c.cab d.deb e.rpm
  • Extract every file from the current directory:
    e *

If possible, e identifies the file format by the content and not by the extension, so for most filetypes e can extract it no matter how you name it. It supports rar, zip, tar.gz, tar.bz2, cab, ace, 7zip, dep, rpm, lha, lzop, rzip, and some more; it is very easy to extend it to support other compression utilities.

I was also inspired by the ugliness of the tool unp which tries to do exactly what e does. I did not like the implementation (written in Perl), and thought I can have the same features in a much simpler and more extensible way. The result is that e is just about 80 lines of code, where most of it is either comment or rules that define when to call what. If you know Ruby, have a look at the code.

Installation

For the impatient, installation on Ubuntu:

sudo apt-get install ruby
wget http://martin.ankerl.com/files/e
chmod a+x e
sudo mv e /usr/local/bin

Step by step:

  1. e is written in Ruby, so you need to install this.
  2. Download e from here
  3. copy e into your /usr/local/bin directory
  4. make it executable with chmod +x /usr/local/bin/e.

If you find an archive that e cannot extract and you know a working rule for it, please tell me and I will integrate it.

Download

Requirements

Apart from Ruby, e uses the linux tool file to determine what kind of archive it is dealing with. This tool should be available on any proper Linux installation. Once e knows the archive type, the appropriate extraction tool is executed. You might need to install a missing tools if you do not have it already.

ChangeLog

Here you can find the changes e has undergone over time.

24th February 2008
Support for FreeArc added, when the extension .arc is used.
8th January 2008
Added support for extraction of self-extracting zip, thanks for Samuel Jones for recognizing this. When e is called without parameters, it shows the release date and a copyright.
25th February 2007
When extracting multiple archives and extraction fails, e now continues to extract the other files and prints an error message about all the files when it has finished.
28th December 2006
In Ubuntu the 7z executable is now called 7zr. Now e works with the executables 7z, 7za, and 7zr.
10th December 2006
Added rules for ar, cpio, dar, uharc, and zzip. For uharc you need wine, and uharc.exe in your path.
14th August 2006
Added comments, fixed a typo
12th August 2006
ADD Extraction of debian packages with ar if dpkg is not available
ADD support for LZMA tar archives (extension has to be .tar.lzma or .tlz)
11th August 2006
First public release of e.