0

我有一个 zip 文件夹,里面有 5 个文本文件。我必须在不解压缩 zip 文件夹的情况下检查每个文件的行数。

我试过zcat file.zip | wc -l了,但它只给出了第一个文件的计数。

你们能帮我得到如下所述的结果吗:

File_Name Rowcount
file1 100
file2 100
file3 100
file4 100
file5 100
4

1 回答 1

-1

如果您的文件是 gzip 压缩的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循环)

于 2018-04-12T22:45:23.060 回答