`.zip`文件夹中每个文件的行数

时间:2018-04-12 21:13:14

标签: linux unix zcat

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

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

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

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

1 个答案:

答案 0 :(得分:-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循环)