Removendo arquivos em ~ 5k

0

Eu tenho 12 directores:

/home/imp/hpt/boxes/110.110.2.0/
/home/imp/hpt/boxes/115.115.16.0
/home/imp/hpt/boxes/1.154.10.0/
/home/imp/hpt/boxes/44.100.0.0/
/home/imp/hpt/boxes/46.1.100.0/

/home/imp/hpt/outbound/
/home/imp/hpt/outbound.002/
/home/imp/hpt/outbound.02c/
/home/imp/hpt/outbound.02e/
/home/imp/hpt/outbound.06e/
/home/imp/hpt/outbound.073/
/home/imp/hpt/outbound.38f/

Eu quero remover arquivos com menos de ~ 5k em cada um desses diretórios. Os arquivos são *.mo? *.tu? *.we? *.th? *.fr? *.sa? *su? onde ? é um número de 0 a 9

Eu li sobre inotifywait e queria saber se ele poderia ser usado para isso. É possível?

Obrigado.

Edit: Ok, aqui está um script inotifywait que estou tentando escrever .. Eu não fui muito longe como você pode ver.

#!/bin/bash

dir1=/home/imp/hpt/boxes/110.110.2.0/
dir2=/home/imp/hpt/boxes/115.115.16.0/
dir3=/home/imp/hpt/boxes/1.54.10.0/
dir4=/home/imp/hpt/boxes/44.100.0.0/
dir5=/home/imp/hpt/boxes/46.1.100.0/
dir6=/home/imp/hpt/outbound/
dir7=/home/imp/hpt/outbound.002/
dir8=/home/imp/hpt/outbound.02c/
dir9=/home/imp/hpt/outbound.02e/
dir10=/home/imp/hpt/outbound.06e/
dir11=/home/imp/hpt/outbound.073/
dir12=/home/imp/hpt/outbound.38f/

inotifywait --daemon --outfile /home/imp/hpt/remove.log -m "$dir1" "$dir2" "$dir3" "$dir4" "$dir5" "$dir6" "$dir7" "$dir8" "$dir10" "$dir11" "$dir12" -e     delete |
    while read path action file; do
        for name in "$dir1'" "$dir2" "$dir3" "$dir4" "$dir5" "$dir6" "$dir7" "$dir8" "$dir9" "$dir10" "$dir11" "$dir12"

Alguém pode me ajudar?

    
por ignatius 09.01.2018 / 22:32

2 respostas

1

find . \( -name '*.mo[0-9]' -o -name '*.tu[0-9]' \) -size -5120c -delete

Você também pode usar size -5k , mas find faz um arredondamento estúpido, então isso é menos preciso:

but bear in mind that the size is rounded up to the next unit (so a 1-byte file is not matched by -size -1M)

    
por 09.01.2018 / 23:01
0

inotify e inotifywait observam as ações do sistema de arquivos em tempo real. Você poderia usá-los para capturar os arquivos à medida que eles são criados, mas eles não podem ajudá-lo a encontrar arquivos que já existem lá.

Suponho que você deseja encontrar arquivos existentes. Com o GNU find, a expressão para encontrá-los pode ser condensada um pouco usando um padrão de expressão regular:

$ find -type f -size -5120c -regextype awk -regex ".*\.(mo|tu|we|th|fr|sa|su)[0-9]" -delete

(O tamanho 5120 está em bytes, ajuste ao que você precisa.)

    
por 10.01.2018 / 13:10