LC_ALL=C find . ! -name '*.gz' \
-type f \
-size +"$((500*1024*1024))c" \
-mtime +0 \
-exec gzip {} +
Aqui, usando gzip
para compactação. Veja também xz
, bzip2
ou compress
para outros utilitários de compactação com diferentes formatos de compactação.
Observe que algumas implementações find
, como o GNU find
, também suportam -size +500M
.
Você pode adicionar a opção -v
a gzip
para obter algumas informações sobre o progresso.
Se os doisfile
e file.gz
existirem, você receberá um aviso de confirmação. Adicione a opção -f
se você quiser forçar a compactação ou adicione < /dev/null
se não quiser que a file.gz
seja substituída e não queira responder a uma solicitação.
Observe que -mtime +0
verifica se a idade no número inteiro de dias arredondados para baixo é maior que 0, portanto, será válida para arquivos com idade de um dia ou mais, enquanto -size +500M
verifica se o tamanho em número inteiro de mebibytes arredondados para cima for maior que 500
, então será verdadeiro para arquivos cujo tamanho é estritamente maior que 500M (524288000 bytes). / p>
O LC_ALL=C
é garantir que *.gz
corresponda a arquivos cujo nome termina em .gz
, independentemente de o início do nome do arquivo conter caracteres válidos no código do idioma atual ou não. Isso tem o efeito de tamanho de afetar a linguagem das mensagens de erro.
Se você quiser verificar o que faria sem realmente fazer isso, substitua gzip
por echo gzip
.