Количество строк каждого файла в папке `.zip`
У меня есть одна папка zip с 5 текстовыми файлами внутри. Я должен проверить количество строк каждого файла, не разархивируя папку zip.
Я старался zcat file.zip | wc -l
но это дает счет только первого файла.
Можете ли вы, ребята, помочь мне получить результат, как указано ниже:
File_Name Rowcount
file1 100
file2 100
file3 100
file4 100
file5 100
1 ответ
Если ваш файл в архиве tar
архив, тогда вы можете просто зациклить каждое имя файла в архиве, чтобы получить количество строк в каждом. Например, если ваш архив содержит:
$ tar -tzf /tmp/tmp-david/zipfile.tar.gz
yon.c
yourmachinecode.s
zeroonect.c
zeros
zz
Вы можете перебрать имена файлов с помощью:
$ for i in $(tar -tzf /tmp/tmp-david/zipfile.tar.gz); do
printf "%8d lines - %s\n" $(wc -l <"$i") "$i"
done
61 lines - yon.c
5 lines - yourmachinecode.s
63 lines - zeroonect.c
0 lines - zeros
1 lines - zz
Вы можете сохранить сумму и приращение с каждым счетом по мере необходимости, чтобы получить сумму.
Если ваш файл является архивом.zip (MS-DOS), то вы можете сделать то же самое, но разбор отдельных имен файлов из вывода unzip -l
занимает немного больше работы, например
$ unzip -l /tmp/tmp-david/zipfile.zip | grep -v '^-' | \
tail -n+3 | head -n-1 | awk '{print $4}'
(вы должны использовать вышеизложенное, как в подстановке команд, чтобы управлять for
петля)