如何在嵌套的tar.gz档案中找到特定的文本字符串?

时间:2014-04-06 13:12:14

标签: regex windows winapi windows-7 tar

如何在包含在嵌套的.tar.gz档案中的源代码文件中找到特定的文本字符串,打包在其他rar存档(48MB)中? (在Windows 7上)我尝试使用LookDisk,但它会挂起并崩溃。是否有可能找到使用系统 findstr 实用程序,以及这是什么正则表达式?或者使用其他搜索工具,不需要安装(便携式)。

1 个答案:

答案 0 :(得分:1)

基于SuperUser answer此示例批处理文件搜索多个.tar.gz存档文件(在命令行中指定)并输出包含指定字符串的.tar.gz的文件名。

它可以在不将任何文件输出到磁盘的情况下执行此操作。

它依赖于7-Zip,你可以使用它的便携版本 - 它不需要安装" - 但可以使用。

将变量SEARCHSTR(当前为hell)的值更改为您要搜索的字符串。

我无法看到任何明显或简单的方法返回包含档案内文字的文件的文件名。

@echo off
setlocal enabledelayedexpansion

set SEARCHSTR=hell

rem Ensure 7z.exe is in your path or in current directory... ie. set PATH=%PATH%;C:\Program Files\7-Zip

rem Loop through all commandline args - the tar.gz files
for %%i in (%*) do (

    rem Extract without an intermediate .tar
    7z x "%%i" -so | 7z x -si -ttar -so | findstr /C:"%SEARCHSTR%"

    if "!ERRORLEVEL!" == "0" (
      set FOUNDIN=%%i

      rem Exit after we find the first occurrence.
      goto found
    )
)


:notfound
echo Unable to locate search string "%SEARCHSTR%" in specified files.
goto end

:found
echo Found search string "%SEARCHSTR%" in "%FOUNDIN%".

:end

编辑1 - 使用自包含/便携式7-Zip

下载Official 7-Zip Download page摘录中列出的官方7-Zip Command Line Version个,并使用7za.exe它是一个自包含的7-Zip命令行版本,这意味着您赢了'我需要7za.exe

的任何额外文件

您需要将7z的两次出现更改为7za才能使用此版本。 这一行:

7z x "%%i" -so | 7z x -si -ttar -so | findstr /C:"%SEARCHSTR%"

更改为:

7za x "%%i" -so | 7za x -si -ttar -so | findstr /C:"%SEARCHSTR%"