특정 패턴으로 파일을 압축하려면 /bin/gzip을 사용하세요.

특정 패턴으로 파일을 압축하려면 /bin/gzip을 사용하세요.

특정 모드로 파일을 개별적으로 압축하고 싶습니다. 예를 들어 다음과 같은 디렉터리가 있습니다.

/log/log1
    -/1/log2/file.1
    -/1/log2/file123
    -/1/log2/file2.1
/log/log2
    -/2/log2/file4.1
    -/2/log2/file345
    -/2/log2/file3.1

/log에서 확장자가 .1인 모든 파일을 반복적으로 압축하고 싶습니다.

결과는 다음과 같습니다.

/log/log1
    -/1/log2/file.gz
    -/1/log2/file123
    -/1/log2/file2.gz
/log/log2
    -/2/log2/file4.gz
    -/2/log2/file345
    -/2/log2/file3.gz

답변1

find+bash해결책:

find /log -type f -name "*.1" -exec bash -c 'gzip -nc "$1" > "${1:0:-2}.gz"; rm "$1"' _ {} \;

gzip옵션:

  • -n- 압축 시 기본적으로 원본 파일명과 타임스탬프는 저장되지 않습니다.
  • -c- 출력을 표준 출력에 기록합니다. 원본 파일은 변경되지 않습니다.

${1:0:-2}bash-의일부분; 마지막 2자가 잘린 파일 경로를 가져옵니다.

답변2

다음을 수행할 수 있습니다.

find /log -name '*.1' -type f -exec sh -c '
  for file do
    gzip "$file" && mv -i "$file.gz" "${file%.*}.gz"
  done' sh {} +

우리는 일부 메타데이터를 압축 파일에 보존하고 충돌을 더 잘 처리하는 기능 의 이점을 얻기 위해 gzip file && mv -i file.gz newfilevs.를 사용합니다.gzip < file > newfile && rm -f filegzipmv -i

관련 정보