파일이 여러 타르볼에 존재하는지 찾는 가장 빠른 방법은 무엇입니까? [폐쇄]

파일이 여러 타르볼에 존재하는지 찾는 가장 빠른 방법은 무엇입니까? [폐쇄]

tar tf내가 찾고 있는 파일을 기반으로 각 파일의 출력을 사용하고 확인하는 것 외에 이 작업을 수행하는 더 효율적인 방법이 있습니까?

이것이 내가 지금 하는 방법이지만 매우 느립니다(대략 600-1000개의 아카이브가 적합합니다 search_patterns).

ARRAY=()
ARRAY[0]=/path/to/archives/*search_pattern1*
ARRAY[1]=/path/to/archives/*search_pattern2*
ARRAY[2]=/path/to/archives/*search_pattern3*

for f in ${ARRAY[@]}
do
    if [[ $f =~ "matching_pattern1" ]]; then
        if tar -tf "$f" | grep "matching_pattern2" ; then
            printf "%s\n" $f;
            exit 0;
        fi
    fi
done

그만한 가치가 있는 것은 search_patterns3일 연속으로 일치하는 아카이브를 먼저 찾은 다음 matching_pattern1해당 아카이브를 모두 보고 이를 포함하는 파일을 matching_pattern2출력하고 싶습니다.tar

답변1

Tar 파일에는 디렉토리(zip 파일과 같은)가 없으므로 이것이 tar tf가능한 유일한 작업입니다.

이 명령을 여러 번 실행해야 하는 경우 물론 파일에 있는 각 tar 파일의 내용을 나열하고 검색할 수 있습니다.

tar tvf oneofthe.tar > oneofthe.tar.lst

검색을 다시 실행해야 할 가능성이 작은 경우에도 이 작업을 수행합니다. 먼저 검색을 수행한 다음 출력에서 ​​검색하는 대신(예: grep 사용) 검색하는 것이 거의 느리지 않기 때문입니다.tar tf

관련 정보