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:
- e is written in Ruby, so you need to install this.
- Download e from here
- copy e into your /usr/local/bin directory
- 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.
Pingback: redemption in a blog
Pingback: Programming Kung Fu » Program “e” updated
Pingback: “e” — New Release of Extract Any Archive — Martin Ankerl
Pingback: La otra bola de cristal » Blog Archive » Otra manera de descomprimir rápida y fácilmente
Pingback: Linux Music » Blog Archive » Descomprime Archivos De Forma Chupá En Linux Con E
Pingback: links for 2007-11-13 « Where Is All This Leading To?
Pingback: e??????????????? | LinuxDig
Pingback: e - extract any archive (commandline) « Martinbaselier’s Blog