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

У меня есть более 200 .zip файлов в одной папке. Я не хочу распаковывать их по одному. Я хочу извлечь те, которые используют одну команду или скрипт. Как это сделать.

27
задан 9 March 2014 в 03:39

7 ответов

Если Вы действительно хотите распаковать их параллельно, Вы могли бы сделать

for i in *zip; do unzip "$i" & done

, Что однако, запустит процессы N для zip-файлов N. и мог быть очень тяжелым в Вашей системе. Для более управляемого подхода, запуская только 10 параллельных процессов за один раз, попробуйте это:

find . -name '*.zip' -print0 | xargs -0 -I {} -P 10 unzip {}

Для управления количеством параллельных запущенных процессов, изменение -P к тому, что Вы хотите. Если Вы не хотите, рекурсивно вызывают в подкаталоги, сделайте это вместо этого:

find . -maxdepth 1 -name '*.zip' -print0 | xargs -0 -I {} -P 10 unzip {}

, С другой стороны, можно установить параллель GNU , как предложено @OleTange в комментариях и работать

parallel unzip ::: *zip
0
ответ дан 9 March 2014 в 03:39

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

$ sudo apt-get install parallel

Тогда

ls *.zip | parallel unzip

Это будет использовать столько ядер, сколько Вы имеете, заставляя каждое ядро напряженно трудиться с тем, чтобы разархивировать, пока они все не сделаны.

0
ответ дан 9 March 2014 в 03:39

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

Первый каталог изменения в терминале к каталогу, который содержит .zip файлы:

cd /path

Тогда выполняют эту команду для разархивации всех .zip файлов:

for z in *.zip; do unzip "$z"; done
0
ответ дан 9 March 2014 в 03:39

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

cd <path_to_folder>

Теперь использование эта команда для распаковки весь Вашего .zip файл:

ls *.zip | xargs -n1 unzip
0
ответ дан 9 March 2014 в 03:39

Можно использовать, находят с -exec как так,

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

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

0
ответ дан 9 March 2014 в 03:39

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

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

0
ответ дан 9 March 2014 в 03:39

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

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

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

0
ответ дан 9 March 2014 в 03:39

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

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