разархивация нескольких файлов сразу

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

3
задан 27 February 2017 в 19:36

3 ответа

Это будет добиваться цели, работать, это на терминале

for f in *.zip; do unzip $f -d ${f%.*}; done

хорошо переопределило ответ, учитывающий комментарий:

В одном файле, названном unzip.sh, помещает этот код:

#!/bin/bash
LEN=${#}
COUNT=0
PROCESSES=20
ITERATE=$(( LEN/PROCESSES ))
for ((i=0;i<=ITERATE;i++))
do 
    LOWER=$(( i*PROCESSES+1 ))
    HIGHER=$(( (i+1)*PROCESSES ))
    ./aux.sh ${@:$LOWER:$HIGHER} &!
done

В одном файле, названном aux.sh, помещает этот код:

#!/bin/bash
for f in $@; do unzip $f -d ${f%.*}; done

Не забывают устанавливать оба файла с полномочиями выполнения путем ввода в терминале: chmod +x unzip.sh aux.sh Теперь все, что необходимо сделать, выполняет сценарий путем ввода в терминале: ./unzip.sh *.zip

1
ответ дан 1 December 2019 в 16:55

xargs с -P n может использоваться для запущения программы параллельно для нескольких файлов. Следующее, например, выполняет 8 экземпляров unzip параллельно.

cd directory-with-zip-files
find . -name '*.zip' -print0 | xargs -0 -n 1 -P 8 unzip
1
ответ дан 1 December 2019 в 16:55

Если бы файлы в zip-файлах находятся в их соответствующих папках, более легкое решение состояло бы в том, чтобы ввести это в открытом терминале папки zip-файлов:

разархивировали "*.zip"

0
ответ дан 1 December 2019 в 16:55

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

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