많은 파일이 포함된 폴더를 gunzip으로 압축

많은 파일이 포함된 폴더를 gunzip으로 압축

36,348 gz 파일이 포함된 폴더가 있습니다. 모두 압축을 풀고 싶습니다.

달리기:

gunzip ./*

밝혀지다

-bash: /usr/bin/gunzip: Argument list too long

이 문제를 해결하는 가장 쉬운 방법은 무엇입니까?

답변1

노력하다:

find . -type f -exec gunzip {} +

이는 현재 디렉토리에 압축을 풀려는 파일만 포함되어 있다고 가정합니다.

답변2

제한은 커널에 있으며 execve()명령을 실행하는 데 사용되는 시스템 호출에 전달되는 매개변수와 환경의 누적 크기에 따라 달라집니다. 여러 호출로 분할할 수 있습니다.

현재 디렉터리의 모든 파일에 gunzip:.gz

그리고 zsh:

autoload zargs # best in ~/.zshrc
zargs ./*.gz -- gunzip

그리고 ksh93:

command -x gunzip ./*.gz

GNUly:

printf '%s\0' *.gz | xargs -r0 gunzip

POSIXly (및 gunzip):

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

(숨겨진 파일도 압축이 풀립니다 .gz.)

또는 일부 시스템에서는 제한을 늘릴 수 있습니다. 최신 버전의 Linux:

ulimit -s unlimited
gunzip ./*.gz

답변3

내가 찾은 가장 쉬운 방법은 다음과 같습니다.

gunzip -r .

답변4

덜 효율적이지만 장기적으로는 매우 유연한 프로세스는 배치 파일을 만드는 것입니다.

ls | grep .gz | sed -e 's/^/gunzip /' | less

간단한 오타로 인해 시스템이 손상되지 않도록 예상할 수 있는 내용을 보여줍니다.

ls | grep .gz | sed -e 's/^/gunzip /' | bash

지금 그것을 할

ls | grep .gz | sed -e 's/^/gunzip /' > unpack
at 02:00
bash unpack
<ctrl-d>

밤새

(이 예에서는 파일 이름의 공백을 고려하지 않습니다.)

관련 정보