압축되지 않은 경우에도 zcat 출력 텍스트를 만들 수 있습니까? [복사]

압축되지 않은 경우에도 zcat 출력 텍스트를 만들 수 있습니까? [복사]

문제는 일부 데이터베이스 덤프가 압축되어 있거나 일반 텍스트라는 것입니다. 파일 확장자 등은 아무런 차이가 없습니다. zcat압축되지 않은 파일에 사용하면 출력 대신 오류가 발생합니다.

cat입력 유형을 감지할 만큼 똑똑한 또 다른 도구가 있습니까 ?

답변1

해당 -f옵션을 추가하면 됩니다.

$ echo foo | tee file | gzip > file.gz
$ zcat file file.gz
gzip: file: not in gzip format
foo
$ zcat -f file file.gz
foo
foo

(GNU(또는 최신 BSD와 같은 GNU 에뮬레이션)가 아니고 파일에 대해서만 알고 있다면 gzip -dcf대신 사용하십시오.)zcat -fzcat.Z

답변2

zgrep이식 가능하고 간단한 제안은 대신 을 사용 zcat하고 각 행과 일치하는 검색 패턴만 사용하는 것입니다.

zgrep $ some-file

zcat와 달리 zgrep압축되지 않은 파일을 쉽게 처리합니다. 남자 zgrep에서:

zgrep - search possibly compressed files for a regular expression

답변3

GNU를 사용하면 gzip그것을 할 수 있습니다 zcat file 2> /dev/null || cat file. 이것은 POSIX 표준이 아니며 BSD에 적용되지 않습니다 . 모든 ped 파일이 확장자를 갖도록 gzip시스템을 수정해야 합니다 (물론 일반 텍스트 파일에는 를 포함한 모든 확장자가 있을 수 있습니다 ).gzip.gz.gz

답변4

Bash의 또 다른 옵션:

for filename in *;do #Replace with your actual loop
    case $filename in
    *.gz) gunzip <"$filename";;
    *)    cat "$filename";;
    esac
done

관련 정보