![압축되지 않은 경우에도 zcat 출력 텍스트를 만들 수 있습니까? [복사]](https://linux55.com/image/37303/%EC%95%95%EC%B6%95%EB%90%98%EC%A7%80%20%EC%95%8A%EC%9D%80%20%EA%B2%BD%EC%9A%B0%EC%97%90%EB%8F%84%20zcat%20%EC%B6%9C%EB%A0%A5%20%ED%85%8D%EC%8A%A4%ED%8A%B8%EB%A5%BC%20%EB%A7%8C%EB%93%A4%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
문제는 일부 데이터베이스 덤프가 압축되어 있거나 일반 텍스트라는 것입니다. 파일 확장자 등은 아무런 차이가 없습니다. 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 -f
zcat
.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