php - 在屏幕上提取 ZIP 的内容,但避免除文件名之外的额外信息

标签 php linux command-line zip

我正在寻找一个命令,该命令将打印存档的所有内容(包括子文件夹及其文件),而无需将实际存档提取到磁盘上,而仅在屏幕上显示。

我使用本网站的一些其他问题和答案取得了一些成就,这是我的命令:

unzip -l test.zip | awk '/-----/ {p = ++p % 2; next} p {print $NF}'

输出:

0 04-11-2009 13:43 jodconverter-webapp-2.2.2/ 1815 04-11-2009 13:43 jodconverter-webapp-2.2.2/README.txt 0 04-11-2009 13:43 jodconverter-webapp-2.2.2/src/ 5349 04-11-2009 13:42 jodconverter-webapp-2.2.2/src/jodconverter-webapp-2.2.2-sources.jar 26436 04-11-2009 13:43 jodconverter-webapp-2.2.2/LICENSE.txt 3819 04-11-2009 13:43 jodconverter-webapp-2.2.2/ChangeLog.txt 3314202 04-11-2009 13:42 jodconverter-webapp-2.2.2/jodconverter-webapp-2.2.2.war

如您所见,输出只有一行,其中包含一些我并不真正需要的额外信息。

我想要这样的输出:

jodconverter-webapp-2.2.2/
jodconverter-webapp-2.2.2/README.txt
jodconverter-webapp-2.2.2/src/
jodconverter-webapp-2.2.2/src/jodconverter-webapp-2.2.2-sources.jar
.
.
.

所以不仅我想只输出文件名(及其完整路径)并避免任何额外的其他信息,如 time permissions等等,但我也想使用类似 break-line 的东西区分不同的文件。

请记住,此命令将在 PHP 文件上运行以获取文件的内容,所以我不知道这是否可以帮助我们使用 <br>做断线。

单条命令就可以吗?

最佳答案

嗯,我想不出一个命令可以返回你需要的输出,但也许其他人可以知道更多。

在你的情况下,我会做的是将行拆分为数组并使用它,直到你得到你想要的。

您实际上必须找到适用于所有情况的模式。 简要查看命令的输出后,我做出了以下决定:

  1. 您使用空格作为分隔符来拆分行(即 explode() )
  2. 我能看到的模式是在实际文件/目录之前存在 xx:xx 形式的时间!因此,您可以使用正则表达式检查当前行是否是基于 24 的有效时间,这意味着如果是这样并且您位于数组 $ 的 $i 位置i+1 是您要查找的内容,因此您可以将其复制到新数组。
  3. 重复

我认为这有点痛苦,但至少是一个解决方案。

关于php - 在屏幕上提取 ZIP 的内容,但避免除文件名之外的额外信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30936022/

相关文章:

php - 无法连接MySQL : (1045) Access denied for user 'root' @'localhost' (using password: YES)

mysql - 停止来自 mysql 终端的警告

regex - "*"在 grep 的正则表达式中的含义

bash - shell 脚本 : How to write a string to file and to stdout on console?

windows - 在 'Lua for windows' 中设置运行文件的路径

python - 如何从 Linux 终端逐行执行 python 命令?

php - Laravel 5.3 - Carbon Date - UTC 偏移获取时区名称

php - 通过 UI 输入在表中添加新列

php - 如何在 Laravel 中手动捕获错误异常

linux - 在 if 语句中使用 grep