列出文件,包括档案内容

列出文件,包括档案内容

是否有某种方法可以从 shell 中查找与文件模式匹配的所有文件,包括档案中的文件(具体来说:zip 档案)?


模拟包“VASP”生成名为“OUTCAR”的文件。这些文件现在分布在数百个文件夹中,大多数但不是全部,都经过压缩,以通过减少文件混乱来加快增量备份的速度。我现在想在所有这些压缩和非压缩的 OUTCAR 文件上运行脚本。

当然,我可以编写一个脚本,使用“find”来查找解压后的文件,并使用 find、grep 和 unzip 的组合来查找压缩文件,但如果有的话,最好使用标准解决方案,因为它允许在我的脚本中轻松地将 zip 文件视为只读文件夹。

理想情况下,会有一组命令模拟常见 shell 命令(如、catgrep的行为find,不同之处在于它们允许将 zip 文件作为文件名的一部分。

我不需要这样的工具来处理嵌套的 zip 文件。我从 切换.tar.gz到 的真正原因.zip是存在一个无需提取任何内容即可访问的文件索引(对于高压缩的 100 MB 档案,速度差异很大),而当涉及嵌套档案时,部分文件索引会丢失。

顺便说一句,我正在使用带有 Cygwin 的 Windows 7(尽管这只会对进程创建的性能产生影响)。

答案1

你可以使用 unzip 命令列出 zip 文件内容,如下所示

 unzip -l file.zip

编辑:其实这个回答可能对你想要完成的事情很有帮助

答案2

如果您使用的是 OSX,请尝试在名称前添加 az 的相同实用程序。它们将搜索压缩文件和非压缩文件。

从手册页中:

zgrep, zegrep, and zfgrep act like grep, egrep, and fgrep, respectively, but accept input files compressed with the compress(1) or gzip(1) compression utilities.

zcat  is identical to gunzip -c.

在 Debian Linux 上

zgrep

是一个脚本包装器,它解压 zip 文件并通过它进行 grep,这样至少你不必自己编写它。

答案3

只需几分钟即可将 python os.walk 示例扩展为 a) 列出与您的模式匹配的文件(在文件列表上使用 re)和 b) 当遇到压缩/tared/etc 文件时,使用适当的库打开它们并对其中的文件名进行模式匹配。(抱歉,我得去上班了,所以不能为你写出来)。

相关内容