Декомпрессия нескольких файлов одновременно

Наконец, я решил проблему с помощью:

установки GDM: sudo apt-get install gdm выбрав ее по умолчанию: When asked, choose GDM as your default X windows manager restarting: sudo reboot Возврат в lightdm по умолчанию X window manager: dpkg-reconfigure lightdm [ ! d1]

Ps: запуск команды dpkg-reconfigure lightdm без установки GDM до того, как я не решил свою проблему. Поэтому попробуйте установить GDM раньше.

1
задан 9 March 2014 в 05:39

6 ответов

Параллельная команда GNU хорошо подходит для такого типа вещей. После:

$ sudo apt-get install parallel

Тогда

ls *.zip | parallel unzip

Это будет использовать столько ядер, сколько у вас есть, заставляя каждое ядро ​​занято распаковкой, пока все не закончится. [!d3 ]

16
ответ дан 24 May 2018 в 11:00
  • 1
    Лучше использовать echo *.zip вместо этого, чтобы предотвратить возможный псевдоним ls от кражи дополнительной информации. Тем не менее, это имеет ту же проблему, что и ответ @ Guru, он разбивает имена файлов, содержащие пробелы. – nyuszika7h 9 March 2014 в 19:38
  • 2
    @ nyuszika7h В отличие от xargs GNU Parallel делает not разбиение на имена файлов, содержащие пробел / табуляцию / цитату. Только если имена файлов содержат символы новой строки, вам придется проявлять особую осторожность. Например, используя: parallel unzip ::: *.zip – Ole Tange 9 March 2014 в 20:12
  • 3
    @OleTange Я вижу, спасибо. – nyuszika7h 9 March 2014 в 20:14
  • 4
    @ nyuszika7h - Это хорошие причины, чтобы избежать обеих стандартных правил сглаживания, и , помещая пробелы в имена файлов. – Wayne Conrad 9 March 2014 в 21:50
  • 5
    @NateEldredge. Хотя этот шанс был больше в то время, когда в системах был только один магнитный диск, в наши дни с RAID-массивами с несколькими шпинделями и флеш-диском этот шанс меньше. Лучше всего сделать, конечно, чтобы измерить и посмотреть, как ваша система ведет себя. Недавно я использовал 40-ти шпиндельный RAID, где оптимальный параллелизм для голодных процессов ввода-вывода составлял 10: он не давал 10-кратной скорости - всего 6 раз, но менее 10 процессов дали меньше 6х. – Ole Tange 10 March 2014 в 14:58

Вы можете использовать следующую команду:

Первый каталог изменений в терминале в каталог, содержащий ZIP-файлы:

cd /path

Затем выполните эту команду, чтобы распаковать все .zip-файлы :

for z in *.zip; do unzip "$z"; done
12
ответ дан 24 May 2018 в 11:00

Если у вас много файлов .zip в вашей папке, и вы хотите распаковать их все, откройте терминал и перейдите в свою папку, используя:

cd <path_to_folder>

Теперь используйте эту команду, чтобы распаковать все ваши Файл .zip:

ls *.zip | xargs -n1 unzip
10
ответ дан 24 May 2018 в 11:00
  • 1
    Это не удастся, если в каком-либо из имен файлов есть пробел. – terdon♦ 9 March 2014 в 02:22
  • 2
    да вы правы. – g_p 9 March 2014 в 02:23
  • 3
    Лучше использовать echo *.zip вместо этого, чтобы предотвратить возможный псевдоним ls от подкрадывания дополнительной информации, однако это еще не устраняет проблему с пробелами. – nyuszika7h 9 March 2014 в 19:37
  • 4
    @OleTange В случае, если вы не заметили, я сказал, что он все еще терпит неудачу в именах файлов с пробелом в них. – nyuszika7h 9 March 2014 в 21:59
  • 5
    Никогда не зависеть от вывода из ls для скриптов, так как его вывод не определен между версиями. Вместо этого посмотрите на ответ от @terdon, поскольку он решает все проблемы этого решения. – Paddy Landau 12 March 2014 в 19:04

Вы можете использовать find с -exec, например,

find . -name "*.zip" -exec unzip {} \;

Это будет работать, если у файла есть пробел в имени.

6
ответ дан 24 May 2018 в 11:00

Нетерминальный метод.

Просто выберите zip-файлы, щелкните правой кнопкой мыши по одному и выберите extract here. Вы можете выбрать все или просто несколько zip-файлов за раз.

3
ответ дан 24 May 2018 в 11:00

unzip \*.zip или unzip '*.zip'

Очевидный unzip *.zip не работает, потому что оболочка расширяет его до unzip foo.zip bar.zip ..., а unzip интерпретирует первое имя файла как zip-файл и следующие имена файлов в качестве файлов для извлечения из этого zip-файла.

Однако unzip является немного необычным среди команд Unix, поскольку он делает свои собственные расширения glob. Если * не будет расширена оболочкой, unzip сделает это и проинсет всех результирующих имен файлов в виде файлов zip, которые будут обрабатываться. Поэтому в этом специальном случае можно обойтись без цикла for или xargs или тому подобного.

1
ответ дан 24 May 2018 в 11:00

Другие вопросы по тегам:

Похожие вопросы: