Extract many types of files
Based on their extensions,
-7z bz2 deb gz iso dsc rar rpm tar xz zip sfs & some combinations.
+7z [tar.]bz2 deb [tar.]gz iso dsc rar rpm sfs tar xpi [tar.]xz zip Z.
See source for exact file extensions.
-Note: apt-get install dtrx will do the same for
-most of these types, plus some more, I'm going
-to try it out sometime."
+Note: dtrx (package & command) extracts most of these plus some others."
if [[ $1 == --help ]]; then
echo "$help"
local x super
for x in "$@"; do
case "$x" in
+ # tars first, so they are higher pri than non-tar extensions
+ *.tar ) tar xf "$x" ;;
*.tar.bz2 | *.tbz2 ) tar xjf "$x" ;;
*.tar.gz | *.tgz ) tar xzf "$x" ;;
- *.bz2 ) bunzip2 "$x" ;;
- *.gz ) gunzip "$x" ;;
- *.tar ) tar xf "$x" ;;
- *.zip ) unzip "$x" ;;
- *.Z ) uncompress "$x" ;;
- *.7z ) 7za x "$x" ;;
- *.deb ) ar x "$x" ;;
- *.rpm ) rpm2cpio "$x" | cpio --extract --make-directories ;;
*.tar.xz ) tar Jxf "$x" ;;
*.xz) xz -d "$x" ;;
+ *.7z ) 7za x "$x" ;;
+ *.bz2 ) bunzip2 "$x" ;;
+ *.deb )
+ ar x "$x"
+ tmp=(data.tar.*)
+ case $tmp in
+ *.xz) tar xJf data.tar.xz ;;
+ *.gz) tar xzf data.tar.gz ;;
+ *) echo "error: could not find data.tar.*" >&2; exit 1 ;;
+ esac
+ tar xzf control.tar.gz
+ rm -f control.tar.gz
+ rm -f data.tar.*
+ ;;
+ *.dsc) dpkg-source -x "$x" ;;
+ *.gz ) gunzip "$x" ;;
*.iso )
local super
if [[ $EUID != 0 ]]; then
cp -a "$temp_dir"/* "$dir"
$super umount "$temp_dir"
;;
+ *.jar) jar xf "$x" ;;
*.r[0-9][0-9]|*.rar ) unrar x "$x" ;;
- *.dsc) dpkg-source -x "$x" ;;
- *.sfs) $user unsquashfs "$x" ;;
- *) echo "I don't kno how to extract $x";;
+ *.rpm ) rpm2cpio "$x" | cpio --extract --make-directories ;;
+ *.sfs) $super unsquashfs "$x" ;;
+ *.Z ) uncompress "$x" ;;
+ *.zip|*.xpi ) unzip "$x" ;;
+
+ *) echo "I don't know how to extract $x";;
esac
done
}