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/2006/08/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

Get e here.

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.

25th June 2009

  • Command for NanoZip added.
  • Extracting RPM now preserves the original file timestamps (thanks to Michael Gruys)

14th January 2009

  • Support for PowerISO added.
  • When RAR extraction fails, broken files are not deleted any more.

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.