Como eu procuro encontrar arquivos e comprimir se for maior que 500M

2

Eu preciso encontrar arquivos maiores que 500M e mais antigos que 1 dia e preciso compactar esses arquivos. Também preciso omitir arquivos com extensão .gz. Como pode ser alcançado?

    
por sabarish jackson 25.04.2016 / 13:44

1 resposta

3

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 .

    
por 25.04.2016 / 13:47

Tags