500M보다 크고 1일보다 오래된 파일을 찾아야 하며 이러한 파일을 압축해야 합니다. 확장자가 .gz인 파일도 생략해야 합니다. 이것이 어떻게 달성될 수 있습니까?
답변1
LC_ALL=C find . ! -name '*.gz' \
-type f \
-size +"$((500*1024*1024))c" \
-mtime +0 \
-exec gzip {} +
이는 압축에 사용됩니다 gzip
. 또한 다양한 압축 형식을 사용하는 다른 압축 유틸리티를 보거나 알아 xz
보십시오 .bzip2
compress
일부 find
구현(예: GNU) find
도 -size +500M
.
진행 상황에 대한 정보를 얻을 수 -v
있는 옵션을 추가할 수 있습니다 .gzip
file
둘 다 존재 하는 경우 file.gz
확인 메시지가 표시됩니다. -f
강제로 압축하려는 경우 또는 덮어 < /dev/null
쓰는 것을 원하지 않고 file.gz
프롬프트에 응답하지 않으려는 경우 이 옵션을 추가하십시오.
-mtime +0
나이가 정수 일수로 반올림되었는지 확인하세요 .아래에0보다 크므로 이 값은 1일 이상 지난 파일에 적용되며 -size +500M
크기(MB 단위의 정수)가 반올림되었는지도 확인합니다.위로보다 크므로 500
크기가 큰 파일의 경우에도 마찬가지입니다.엄격하게500M(524288000바이트)보다 큽니다.
이는 파일 이름의 시작 부분에 현재 로케일에서 유효한 문자가 포함되어 있는지 여부에 관계없이 이름이 다음으로 끝나는 파일이 일치하는지 LC_ALL=C
확인하기 위한 것입니다 . 그러나 이로 인해 오류 메시지의 언어에 영향을 미치는 크기 효과가 있을 수 있습니다.*.gz
.gz
실제로 실행하지 않고 무엇을 할지 확인하고 싶다면 gzip
로 바꾸세요 echo gzip
.