Как быстро извлечь все виды архивных файлов из командной строки?

11

Много раз мне нужно извлекать различные виды архивных файлов с помощью запятой. Но не все время помню точную команду для любого типа файлового архива. Итак, я должен тратить время и искать снова. Как я могу избежать этого?

Раду Рэдяну
источник
1
Смотрите также atool, с помощью которого вы можете извлечь / упаковать несколько форматов: посмотрите ответ, который я дал на этот вопрос: командная строка-архив-менеджер-экстрактор . Этот вопрос также является дубликатом этого вопроса, поэтому их, вероятно, следует объединить.

Ответы:

15

Команда dtrxтвой друг по этому вопросу.

Он распаковывает любой архивный файл, угадывая его тип. Это также гарантирует, что файлы, которые вы распаковываете, будут помещены в новый каталог; избегая путаницы текущего рабочего каталога с кучей файлов.

устанавливать

sudo aptitude install dtrx

Применение

dtrx stuff.zip
Thomasleveil
источник
11

Вы можете использовать следующий скрипт оболочки (я назвал его extractи вставил ~/bin):

#! / Bin / Баш

если [$ # -lt 1], то
  echo "Использование:` basename $ 0` FILES "
  выход 1
фи

# Я нашел следующую функцию на https://unix.stackexchange.com/a/168/37944 
#, которую я немного улучшил. Большое спасибо sydo за эту идею.
extract () {
    для аргумента в $ @; делать
        if [-f $ arg]; тогда
            case $ arg in
                * .tar.bz2) tar xjf $ arg ;;
                * .tar.gz) tar xzf $ arg ;;
                * .bz2) bunzip2 $ arg ;;
                * .gz) gunzip $ arg ;;
                * .tar) tar xf $ arg ;;
                * .tbz2) tar xjf $ arg ;;
                * .tgz) tar xzf $ arg ;;
                * .zip) распаковать $ arg ;;
                * .Z) распаковать $ arg ;;
                * .rar) rar x $ arg ;; # 'rar' должен быть установлен
                * .jar) jar -xvf $ arg ;; # 'jdk' должен быть установлен
                *) echo "'$ arg' не может быть извлечено с помощью extract ()" ;;
            ESAC
        еще
            echo "$ arg не является допустимым файлом"
        фи
    сделанный
}

извлечь $ @

Не забудьте сделать скрипт исполняемым:

chmod +x ~/bin/extract

Применение:

извлечь файл_1 файл_2 ... файл_n 
Раду Рэдяну
источник
Хороший. Я нахожу, что zip иногда извлекает в текущий каталог, когда я хочу, чтобы это был его собственный подкаталог. Использование unzip -d basename $argможет помочь.
Crafter