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_patterns
3일 연속으로 일치하는 아카이브를 먼저 찾은 다음 matching_pattern1
해당 아카이브를 모두 보고 이를 포함하는 파일을 matching_pattern2
출력하고 싶습니다.tar
답변1
Tar 파일에는 디렉토리(zip 파일과 같은)가 없으므로 이것이 tar tf
가능한 유일한 작업입니다.
이 명령을 여러 번 실행해야 하는 경우 물론 파일에 있는 각 tar 파일의 내용을 나열하고 검색할 수 있습니다.
tar tvf oneofthe.tar > oneofthe.tar.lst
검색을 다시 실행해야 할 가능성이 작은 경우에도 이 작업을 수행합니다. 먼저 검색을 수행한 다음 출력에서 검색하는 대신(예: grep 사용) 검색하는 것이 거의 느리지 않기 때문입니다.tar tf