tar.gz 아카이브에서 파일을 찾으십시오


12

find와일드 카드를 사용하여 tar.gz 아카이브 내의 파일을 검색 할 수 있도록 명령 을 사용할 수 있습니까?

처럼

find archive.tar.gz --name *foo*

답변:


17

어때요?

$ tar tf archive.tar.gz | grep foo

그게 모든 파일을 나열하지 않습니까?
클램프

@clamp 예, 각 파일에 무언가를하려는 경우, 그 출력을 다른 명령으로 파이프하면됩니다.

감사! 죄송하지만 유닉스의 초보자입니다. 나는 시도했다 : tar tf graphics.tar.gz | find . --name *space*그러나 그것은 말한다unkown predicate --name
클램프

@clamp find인수는 하나의 대시 만 사용하지만 stdin의 파일 목록이므로 grephesse의 예제 코드와 같이 대신 사용하려고 합니다. 시도tar tf graphics.tar.gz | grep 'space'
Kevin

1
grep *foo*유효한 정규식이 아닙니다. greg글로브를 이해하지 못하고 정규 표현식을 이해합니다. grep foo대신 시도하십시오 .
Alexios

3

아카이브를 디렉토리로 마운트하십시오. 당신은 그것을 할 수 에서 avfs 당신이 누구의 이름 뒤에이있는 디렉토리로 모든 아카이브에 액세스 할 수 있도록 파일 시스템 #.

mountavfs
cd ~/.avfs$PWD
find archive.tar.gz\# -name '*foo*'

gzip에서 작동하지 않음
van abel

@vanabel gzip 파일에는 다른 파일이 없습니다. 압축 된 하나의 파일 일뿐입니다. 따라서 검색 할 "내부"가 없습니다.
Gilles 'SO- 악의를 멈춰라

2

나는 그것이 파이프와 grep없이 작동한다고 생각합니다.

이처럼 : tar tvf archive.tar.gz "foo"

이런 식으로 globs도 작동합니다.

tar tvf archive.tar.gz "*.foo"

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.