Excluir diretórios menores que x

3

Como posso excluir diretórios que são menores do que, digamos, 1000 KB?

Eu já tenho uma lista de arquivos do comando:

du -sk * | sort -n > sort.txt

mas não sei como proceder.

Atualização:

du -sk */ | awk 'BEGIN { FS="\t" }; { if($1 < 1000) printf "%s
du -sk * | awk 'BEGIN { FS="\t" }; { if($1 < 1000) print $2 }'
",$0 }' | sort -nrz | hexdump -C | head -n 10 00000000 31 36 09 32 20 50 69 73 74 6f 6c 73 20 46 74 2e |16.2 Pistols Ft.| 00000010 20 54 2d 50 61 69 6e 20 26 20 54 61 79 20 44 69 | T-Pain & Tay Di| 00000020 7a 6d 2f 33 30 34 09 41 63 65 20 41 74 6b 69 6e |zm/304.Ace Atkin| 00000030 73 2f 38 09 41 69 72 6d 61 74 65 20 66 65 61 74 |s/8.Airmate feat| 00000040 2e 20 4d 61 72 69 73 68 6b 61 20 50 68 69 6c 6c |. Marishka Phill| 00000050 69 70 73 2f 31 36 09 41 6c 65 78 61 6e 64 65 72 |ips/16.Alexander| 00000060 20 4b 6f 77 61 6c 73 6b 69 20 66 65 61 74 2e 20 | Kowalski feat. | 00000070 42 61 72 63 61 20 42 61 78 61 6e 74 2f 35 34 34 |Barca Baxant/544| 00000080 09 41 6e 64 72 65 cc 81 73 20 66 65 61 74 20 44 |.Andre..s feat D| 00000090 4a 20 4d 69 6e 78 2f 31 36 09 41 73 69 61 20 43 |J Minx/16.Asia C|

a saída de

dirname
other dirname
other dirname with special chars / . - +

é algo como:

du -sk * | sort -n > sort.txt
    
por harp 14.06.2010 / 17:48

3 respostas

1

O problema com a resposta do whitequark é que grep está adicionando nulos, mas awk os está removendo. Além disso, você pode querer restringir seu comando du para diretórios apenas, já que é isso que você diz que quer medir e excluir com base no tamanho. Adicionando uma barra após o asterisco faz isso.

du -sk */ | awk 'BEGIN { FS="\t" }; { if($1 < 1000) printf "%s
du -sk */ | awk 'BEGIN { FS="\t" }; { if($1 < 1000) printf "%s%pre%",$2 }' | xargs -0 rm -rf
",$2 }' | xargs -0 rm -rf
    
por 14.06.2010 / 20:24
2

Experimente du -sk * | awk 'BEGIN { FS="\t" }; { if($1 < 1000) print $2 }' | grep '' -Z | xargs -0 -s 1024 rm -rf . Tenha cuidado com rm !

    
por 14.06.2010 / 17:53
0

O "grep '' -Z" não funciona para mim, mas tr faz:

du -sk * | awk 'BEGIN { FS="\t" }; { if($1 < 10) print $2 }' |tr '\n' '%code%' |xargs -0 rm -rf

    
por 05.04.2015 / 11:42