Чтение первых N строк из каждого члена zip-архива

Не все дистрибутивы linux используют одинаковые init-скрипты. Даже в тех дистрибутивах, которые якобы используют систему SysV init, есть функции оболочки, специфичные для конкретного дистрибутива.

Кроме того, в raspbian есть пакет 'hostapd', который включает скрипт инициализации hostapd, возможно, это то, что вам следует использовать в любом случае.

0
07.02.2018, 18:41
1 ответ

Не существует «простой» команды, так как unzip изначально не предлагает эту функциональность. Вы должны попросить его извлечь некоторые или все файлы и обработать их самостоятельно. Вот еще один способ:

zipinfo -1 Ten.zip | while IFS= read -r filename
do 
  unzip -p Ten.zip "$filename" | sed 2q
done

Разница здесь в том, чтобы использовать zipinfoдля вывода списка содержимого архива, по одному в строке; затем мы читаем эти имена файлов строка за строкой и просим unzipизвлечь этот файл на экран (с помощью -p, чтобы имя файла не печаталось ), а затем передать это через sed. ], чтобы он печатал (по умолчанию ), выходя на строке 2.

Это может завершиться ошибкой, если у вас есть заархивированные файлы с символами новой строки в их имени; вы бы этого не сделали, потому что unzip искажает имя файла при извлечении:

$ touch file$'\n'name
$ zip foo.zip file*name
$ rm file*name
$ zipinfo -1 foo.zip
file^Jname
$ unzip foo.zip
Archive:  foo.zip
 extracting: filename
$ ls -lrt
...
filename
1
28.01.2020, 02:44

Теги

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