표준 입력의 gunzip

표준 입력의 gunzip

gz 파일이 많이 있습니다. 모두 추출하고 싶습니다. 내가하려는 일은 다음과 같습니다.

find . | grep .gz | gunzip

그러나 gunzip은 stdinput의 파일 목록을 허용하지 않습니다. 모두 (그 자리에서) 압축을 풀려면 어떻게 해야 합니까?

답변1

현재 디렉토리에서 gunzip이름이 끝나는 모든 파일을 호출하려면 다음을 수행해야 합니다..gz

find . -type f -name '*.gz' exec gunzip {} +

표준 입력의 내용을 명령 인수로 변환하는 보다 일반적인 방법은 xargs를 사용하는 것이지만 이 명령에는 몇 가지 주의 사항이 있습니다.

답변2

어쩌면 더 좋은 방법은 과 옵션을 find사용 하는 것일 수도 있습니다. 이렇게 하면 grep이 필요하지 않으며 일치하는 각 파일을 개별적으로 전달할 수 있습니다.-name-execgunzip

이것은 다음과 같습니다:

find . -name '*.gz' -exec gunzip '{}' +

$CWD이름이 다음으로 끝나는 모든 파일(하위 디렉터리 포함)은 압축 해제를 위해 .gz전달 됩니다 gunzip. 또한 압축이 풀린 파일은 결국 $CWD추가 조치 없이 표시됩니다.

관련 정보