gzip, tar 등을 사용하여 패턴을 기반으로 여러 파일을 압축하는 방법을 알고 싶습니다. 즉, 다음 파일이 있는 경우:
server_regTCA.log.2021.02.12
server_regTCA.log.2021.02.13
server_regTCA.log.2021.02.14
server_regTCA.log.2021.02.15
server_regTCA.log.2021.02.16
server_regTCA.log.2021.02.17
server_regTCA.log.2021.02.18
나는 다음과 같은 것을하고 싶다gzip -9 server_regTCA.log.2021.02.[12-15]
감사해요
답변1
어떤 쉘을 사용하고 있는지 언급하지 않았습니다. 이것은 모드 확장을 제어하는 쉘입니다.
사용하는 경우 bash
중괄호 확장을 사용할 수 있습니다.
gzip server_regTCA.log.2021.02.{12..15}
중괄호 확장이 없는 간단한 셸을 사용하는 경우 sh
단일 문자 패턴만 일치시킬 수 있습니다.
gzip server_regTCA.log.2021.02.1[2-5]
두 경우 모두 명령 앞에 접두사를 붙여서 echo
실제로 실행하지 않고도 쉘이 패턴을 확장하는 방법을 확인할 수 있습니다 gzip
.
"이전" 파일을 압축하려는 경우 더 좋은 방법이 있을 수 있습니다. 예를 들어, 다음은 1년(366일) 이상 전에 마지막으로 변경된 나열된 파일 이름의 모양과 일치하는 모든(압축되지 않은) 파일을 압축합니다.
find ... -type f -mtime +365 -name 'server_regTCA.log.????.??.??' -exec gzip {} +
(각각 ?
하나의 문자와 일치합니다. 압축 파일에는 .gz
패턴과 일치하지 않는 접미사가 있습니다.)
답변2
그리고 zsh
:
gzip -9 -- *.log.2021.02.<12-15>
또는 gzip
임의의 날짜 범위 내의 파일:
start=2021.01.31 end=2022.03.28
gzip -9 -- *.log.*(^e['[[ ${REPLY##*.log.} < $start || ${REPLY##*.log.} > $end ]]'])
(모든 *.log.*
파일에 -style 접미사가 있다고 가정합니다. 그렇지 않은 경우 YYYY-MM-DD
예를 들어 더 명시적으로 일치하도록 만들 수 있습니다.)*.log.[0-9][0-9][0-9][0-9].[0-9][0-9].[0-9][0-9]