디렉토리에서 모든 .gz 압축을 풀고 삭제합니다.-Linux


답변:


169

이렇게해야합니다.

gunzip *.gz

1
... '너무 큰 인수'오류가 발생하지 않는 한. 이 경우 find "$dir" -maxdepth 1 -name '*.gz' -print0 | xjobs -0 -l50 -v2 gunzip인스턴스를 각각 50 개의 인수로 제한하고 병렬로 실행하는 것과 같은 방법을 사용하고 싶을 것입니다.
Toby Speight

22

@techedemic은 정확하지만 '.'가 없습니다. 현재 디렉토리를 언급하고이 명령은 모든 하위 디렉토리를 통과합니다.

find . -name '*.gz' -exec gunzip '{}' \;

19

이를 수행하는 방법은 여러 가지가 있습니다.

    # This will find files recursively (you can limit it by using some 'find' parameters. 
    # see the man pages
    # Final backslash required for exec example to work
    find . -name '*.gz' -exec gunzip '{}' \;

    # This will do it only in the current directory
    for a in *.gz; do gunzip $a; done

다른 방법도 있다고 확신하지만 이것이 아마도 가장 간단 할 것입니다.

그리고 그것을 제거 rm -rf *.gz하려면 해당 디렉토리에서


3

현재 디렉토리와 하위 디렉토리에서 모든 gz 파일을 추출합니다.

 find . -name "*.gz" | xargs gunzip 

3

단일 파일을 추출하려면 다음을 사용하십시오.

gunzip file.gz

파일을 추출하고 .gz 파일을 제거합니다.



0

시험:

ls -1 | grep -E "\.tar\.gz$" | xargs -n 1 tar xvfz

그런 다음 시도하십시오.

ls -1 | grep -E "\.tar\.gz$" | xargs -n 1 rm

이렇게하면 현재 디렉토리에있는 모든 .tar.gz 파일의 압축이 풀린 다음 모든 .tar.gz 파일이 삭제됩니다. 설명이 필요하면 "|" 명령 앞에있는 명령의 stdout을 취하고 그 뒤에있는 명령의 표준 입력으로 사용합니다. 따옴표없이 "man command "를 사용 하여 해당 명령과 인수가 수행하는 작업을 파악하십시오. 또는 온라인으로 조사 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.