1

I intent to check the diskspace with 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

So I start to delete lines containing 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,Remove the lines not starting with number 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

How could I remove the lines containing "du"?

1
  • 4
    The lines beginning with du: appear to be error messages; as such, you can suppress them by simply redirecting the error stream i.e. du -s /* 2>/dev/null | sort -k 1 - there's no need for post-processing via sed Commented Nov 1, 2018 at 1:47

1 Answer 1

1

As steeldriver commented, the lines beginning with du: cannot access ... and ending with :No such file or directory are error messages from du; it had enumerated those directories in /proc, but the corresponding process(es) had exited before du got around to summing their "disk" space, causing an error when it tried to access those now non-existent directories.

Thankfully, du emits those errors, as it should, to stderr, so you can intercept them and drop them with:

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

I also changed your sort command, on the assumption that you want to sort numerically, with the largest sizes at the end.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .