如何在zip中列出文件而不需要命令行中的其他信息


37

在我的bash命令行中,当我使用时,unzip -l test.zip我得到如下输出:

Archive:  test.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
   810000  05-07-2014 15:09   file1.txt
   810000  05-07-2014 15:09   file2.txt
   810000  05-07-2014 15:09   file3.txt
---------                     -------
  2430000                     3 files

但是我只对包含文件详细信息的行感兴趣。

我试图使用grep进行过滤,如下所示:

unzip -l test.zip | grep -v Length | grep -v "\-\-\-\-" | g -v Archive | grep -v " files"

但是它很长并且容易出错(例如,该列表中的文件名Archive将被删除)

使用unzip -l是否有其他选项(我检查了unzip手册页,但没有找到任何选项)或其他工具呢?

对我来说,重要的是不要真正解压缩存档,而只是查看其中的文件。


公认的答案比这要好得多。但我想指出,任何具有多个倍数的东西grep都可以重构为Awk脚本,通常可以大大提高精度。awk 'NR >3 { if (/^ *---/) exit 0; print }'将修剪前三行以及页脚,并且也可以轻松提取文件名(提示:)print substr($0, 29)
三胞胎

是的,我完全同意,这就是我问这个具体问题的原因:拥有更好和可行的解决方案。
рüффп

Answers:


55
zipinfo -1 file.zip

要么:

unzip -Z1 file.zip

将仅列出文件。

如果仍然需要每个文件名的额外信息,则可以执行以下操作:

unzip -Zl file.zip | sed '1,2d;$d'

要么:

unzip -l file.zip | sed '1,3d;$d' | sed '$d'

或者(假设GNU head):

unzip -l file.zip | tail -n +4 | head -n -2

感谢功能强大的sed ...正是我想要的;zipinfo工具也很有趣,我不知道。
рüффп

有没有办法忽略目录?unzip -Z1 zipfile.zip将输出:directory /和directory / file.extension(注意:可能带有。的目录名称,因此添加a | grep .无效)
Matt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.