Распакуйте архив с одним файлом и переименуйте выходной файл в соответствии с именем архива.

В хороших старых временах звуковых карт ISA это не было возможно создание узлов устройств в / dev / динамически, поэтому все устройства должны быть предварительно выделены. Это привело к ограничению в 8 звуковых карт, и драйверы были написаны с учетом этого ограничения.

Позже, когда были представлены devfs и USB, это ограничение было снято.Однако самый простой способ сделать это - внести минимальное количество изменений, то есть просто изменить верхний предел.

Переписать код, чтобы разрешить бесконечное количество карт, потребовало бы больших усилий без каких-либо конкретных преимуществ. (Можно увеличить текущее значение по умолчанию, равное 32, с помощью параметра конфигурации ядра, но люди, которые попробуйте, как правило, выясните, что у них недостаточно пропускной способности USB для такого количества устройств.)

5
28.07.2017, 18:48
2 ответа

Вы можете продолжить идею -dи просто переименовать любой извлеченный файл в желаемое «имя zip минус zip плюс txt»:

mkdir tmp
for f in *.zip; do unzip "$f" -d tmp && mv tmp/* "${f%.zip}.txt"; done
rmdir tmp

Кроме того, вы можете направить вывод из распаковки в файл с соответствующим -именем:

for f in *.zip; do unzip -p "$f" > "${f%.zip}.txt"; done
8
27.01.2020, 20:36

Команда unzipимеет свою собственную опцию unzip -Z1 zipfile.zipдля отображения фактического имени сжатого файла в заархивированном файле, который принимает zipinfo'sопцию -1как zipinfo -1 zipfile.zip. поэтому вы можете просто сделать, как показано ниже, и нет необходимости создавать временный каталог, и mvбудет выполнено в текущем каталоге.

for z in *.zip; do 
    unzip "$z";
    mv "$(unzip -Z1 $z)" "${z%%.*}.txt";
done
1
27.01.2020, 20:36

Теги

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