2014-04-06 2 views
0

anothe rar 아카이브 (48MB) 안에 압축 된 중첩 된 .tar.gz 아카이브에 압축 된 소스 코드 파일의 특정 텍스트 문자열을 찾는 방법은 무엇입니까? (Windows 7) LookDisk를 사용해 보았지만 멈 춥니 다. 사용 시스템 findstr 유틸리티를 찾을 수 있습니까? 이것에 대한 정규 표현식은 무엇입니까? 또는 설치 (휴대용)가 필요없는 다른 검색 유틸리티를 사용하십시오.중첩 된 tar.gz 아카이브에서 특정 텍스트 문자열을 찾는 방법은 무엇입니까?

+0

는, 당신은 모든 것을 추출하고 검색 더 나을 수 있습니다. – devnull

+0

아카이브 내에서 문자열은 자신의 압축 된 2 진 표현으로 만 존재할 것으로 기대되며,이 표현은 아카이브에있는 다른 임의의 데이터의 영향을받는만큼 비 결정적입니다. 입력 된 문자열 만 검색합니다. 데이터를 압축 해제 한 다음 검색해야합니다. –

답변

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 - 우편

Official 7-Zip Download page 추출물에 나와있는 7-Zip Command Line Version 공식 하나를 다운로드하고 당신을 의미 7 - 우편 번호의 독립적 인 명령 줄 버전의 7za.exe를 사용하여 추가 파일이 필요하지 않습니다. 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%" 
+0

7-Zip은 RAR 보관과 동일한 디렉토리에 있습니다.이 줄은 어떻게되어야합니까? 'rem C : \ 7-ZipPortable_9.20_Rev_3.paf' – triwo

+0

'Using self contained/portable 7-zip'에서'Edit 1'을보세요. –

+0

코드의 네 번째 줄은 어떻게되어야합니까? – triwo

관련 문제