Як швидко витягти всі види архівованих файлів з командного рядка?


11

Мені багато разів потрібно витягувати різні види архівованих файлів, використовуючи командний рядок. Але не весь час пам’ятаю точну команду для будь-якого типу архіву файлів. Отже, мені доведеться витрачати час і шукати знову. Як я можу цього уникнути?


1
Дивіться також atool, за допомогою якого ви можете витягнути / упакувати кілька форматів: див. Відповідь, яку я дав на це запитання: командний рядок-архів-менеджер-екстрактор . Це питання також є дублікатом цього, тому їх, мабуть, слід об'єднати.

Відповіді:


15

dtrxКоманда є вашим другом з цього питання.

Він розпаковує будь-який архівний файл, вгадуючи його тип. Це також переконається, що файли, які ви розтискаєте, будуть розміщені в новому каталозі; уникаючи псування поточного робочого режиму з тоннами файлів.

Встановити

sudo aptitude install dtrx

Використання

dtrx stuff.zip

11

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

#! / бін / баш

якщо [$ # -lt 1]; тоді
  echo "Використання:` базове ім'я $ 0` ФАЙЛИ "
  вихід 1
фі

# Я знайшов наступну функцію на https://unix.stackexchange.com/a/168/37944 
#, яку я трохи покращив. Велике спасибі sydo за цю ідею.
витяг () {
    для арг в $ @; робити
        якщо [-f $ arg]; тоді
            справа $ arg в
                * .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) unzip $ arg ;;
                * .Z) віджати $ arg ;;
                * .rar) rar x $ arg ;; # 'rar' має бути встановлено
                * .jar) jar -xvf $ arg ;; # 'jdk' повинен бути встановлений
                *) echo "'$ arg' неможливо витягти через extra ()" ;;
            есак
        ще
            echo "'$ arg' - недійсний файл"
        фі
    зроблено
}

витяг $ @

Не забудьте зробити сценарій виконуваним:

chmod +x ~/bin/extract

Використання:

витягнути файл_1 файл_2 ... файл_n 

Хороший. Я вважаю, що індекс інколи потрапляє в поточний каталог, коли я хочу, щоб це був його власний підкаталог. Використання unzip -d basename $argможе допомогти.
крафтер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.