지정된 패턴을 따르는 특정 파일만 압축을 푸는 방법은 무엇입니까?

지정된 패턴을 따르는 특정 파일만 압축을 푸는 방법은 무엇입니까?

배쉬를 사용하세요.

다음 파일이 포함된 디렉터리 D가 있다고 가정합니다.

20170301:00.out.gz
20170301:01.out.gz
...
20170302:01.out.gz
20170302:02.out.gz

etc.

이러한 파일은 "yyyymmdd:hh"(연도, 월, 일, 시간) 패턴을 따릅니다. Bash를 사용하여 이러한 파일 중 일부의 압축을 풀고 싶지만 아직 어떻게 해야 할지 모르겠습니다.

파일의 경우 물론 "gunzip -c yyyymmdd:hh.out.gz"를 사용할 수 있지만 각 파일을 하드코딩하는 것은 약간 불필요한 것 같습니다...

예를 들어 3월 7일부터 3월 14일까지의 파일만 추출하고 싶다면 어떻게 해야 하나요?

답변1

Bash를 사용하고 있으므로 다음을 사용할 수 있습니다.버팀대 확장:

gunzip {20170307..20170314}*.gz

파일 내용만 보려면 -c에서 확인하세요 gunzip.

순서대로 파일이 손실되면 gunzip해당 파일에 대해 불평하지만 여전히 모든 파일을 처리합니다.순서대로 존재합니다. 이 경우 shell 옵션이 set 이면 확장 자체가 실패 failglob하지만 이는 Bash의 기본값이 아니라는 점도 주목할 가치가 있습니다.

답변2

gunzip -c실제로 압축을 풀지 않고 내용을 표준 출력에만 기록합니다.

귀하의 목적에 따라:

for a in {07..14}; do gunzip -c '201703'$a':02.out.gz'; done

답변3

find방법:

find . -maxdepth 1 -type f -regextype posix-egrep \
-regex ".*/201703(0[7-9]|1[0-4]):[0-5][0-9]\.out\.gz$" -exec gunzip {} \;

관련 정보