gz 파일이 많이 있습니다. 모두 추출하고 싶습니다. 내가하려는 일은 다음과 같습니다.
find . | grep .gz | gunzip
그러나 gunzip은 stdinput의 파일 목록을 허용하지 않습니다. 모두 (그 자리에서) 압축을 풀려면 어떻게 해야 합니까?
답변1
현재 디렉토리에서 gunzip
이름이 끝나는 모든 파일을 호출하려면 다음을 수행해야 합니다..gz
find . -type f -name '*.gz' exec gunzip {} +
표준 입력의 내용을 명령 인수로 변환하는 보다 일반적인 방법은 xargs를 사용하는 것이지만 이 명령에는 몇 가지 주의 사항이 있습니다.
답변2
어쩌면 더 좋은 방법은 과 옵션을 find
사용 하는 것일 수도 있습니다. 이렇게 하면 grep이 필요하지 않으며 일치하는 각 파일을 개별적으로 전달할 수 있습니다.-name
-exec
gunzip
이것은 다음과 같습니다:
find . -name '*.gz' -exec gunzip '{}' +
$CWD
이름이 다음으로 끝나는 모든 파일(하위 디렉터리 포함)은 압축 해제를 위해 .gz
전달 됩니다 gunzip
. 또한 압축이 풀린 파일은 결국 $CWD
추가 조치 없이 표시됩니다.