我正在寻找一个命令,该命令将打印存档的所有内容(包括子文件夹及其文件),而无需将实际存档提取到磁盘上,而仅在屏幕上显示。
我使用本网站的一些其他问题和答案取得了一些成就,这是我的命令:
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>
做断线。
单条命令就可以吗?
最佳答案
嗯,我想不出一个命令可以返回你需要的输出,但也许其他人可以知道更多。
在你的情况下,我会做的是将行拆分为数组并使用它,直到你得到你想要的。
您实际上必须找到适用于所有情况的模式。 简要查看命令的输出后,我做出了以下决定:
- 您使用空格作为分隔符来拆分行(即 explode() )
- 我能看到的模式是在实际文件/目录之前存在
xx:xx
形式的时间!因此,您可以使用正则表达式检查当前行是否是基于 24 的有效时间,这意味着如果是这样并且您位于数组$ 的
是您要查找的内容,因此您可以将其复制到新数组。$i
位置i+1 - 重复
我认为这有点痛苦,但至少是一个解决方案。
关于php - 在屏幕上提取 ZIP 的内容,但避免除文件名之外的额外信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30936022/