pt sed para remover linhas que começam com 'du'

1

Eu pretendo verificar o espaço em disco com du -s

[root@iz2ze9wve43n2nyuvmsfx5z /]# du -s /* | sort -k 1|sed "/du/d"
du: cannot access ‘/proc/31265/task/31265/fd/4’: No such file or directory
du: cannot access ‘/proc/31265/task/31265/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/31265/fd/4’: No such file or directory
du: cannot access ‘/proc/31265/fdinfo/4’: No such file or directory
0   /bin
0   /dev
0   /lib
0   /lib64
0   /proc
0   /sbin
0   /sys
158784  /boot
16  /lost+found
2458148 /usr
37500   /etc
496 /run
4   /home
4   /media
4   /mnt
4   /opt
4   /srv
534680  /root
568 /tmp
935544  /var

Então eu começo a deletar linhas contendo du

1, sed "/ du / d"

[root@iz2ze9wve43n2nyuvmsfx5z /]# du -s /* | sort |sed "/du/d" | head -n 6
du: cannot access ‘/proc/31563/task/31563/fd/4’: No such file or directory
du: cannot access ‘/proc/31563/task/31563/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/31563/fd/4’: No such file or directory
du: cannot access ‘/proc/31563/fdinfo/4’: No such file or directory
0   /bin
0   /dev
0   /lib
0   /lib64
0   /proc
0   /sbin

2, remova as linhas que não começam com o número sed "/[^\d]*/d"

    [root@iz2ze9wve43n2nyuvmsfx5z /]# du -s /* | sort -k 1|sed "/[^\d]*/d" | head -n 6
    du: cannot access ‘/proc/31612/task/31612/fd/4’: No such file or directory
    du: cannot access ‘/proc/31612/task/31612/fdinfo/4’: No such file or directory
    du: cannot access ‘/proc/31612/fd/4’: No such file or directory
    du: cannot access ‘/proc/31612/fdinfo/4’: No such file or directory

but return the lines I want to delete

3, sed "/ \ d * / d"

[root@iz2ze9wve43n2nyuvmsfx5z /]# du -s /* | sort -k 1|sed "/\d*/d" | head -n 6
du: cannot access ‘/proc/31703/task/31703/fd/4’: No such file or directory
du: cannot access ‘/proc/31703/task/31703/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/31703/fd/4’: No such file or directory
du: cannot access ‘/proc/31703/fdinfo/4’: No such file or directory

Como posso remover as linhas que contêm "du"?

    
por JawSaw 01.11.2018 / 02:43

1 resposta

1

Como a steeldriver comentou, as linhas que começam com du: cannot access ... e terminam com :No such file or directory são mensagens de erro de du; ele havia enumerado esses diretórios em / proc, mas o (s) processo (s) correspondente (s) saíra antes que du chegasse para somar seu espaço "disk", causando um erro quando tentava acessar os diretórios agora inexistentes.

Felizmente, du emite esses erros, como deveria, para stderr, para que você possa interceptá-los e soltá-los com:

du -s /* 2>/dev/null | sort -n

Eu também alterei seu comando sort , supondo que você queira ordenar numericamente, com os maiores tamanhos no final.

    
por 02.11.2018 / 01:54