经常会遇到这样的情况。某一台机器的某个目录满了,需要housekeep一下,于是你可能会用下面这样的命令
find /opt -size +20000 -mtime -1 -type f -exec ls -lh {} \;
而这样的命令的输出结果如下
-rwxr-xr-x 5 root root 2.6K Oct 19 2004 /usr/src/kernels/2.6.9-78.0.8.EL-smp-x86_64/scripts/split-man
-rwxr-xr-x 5 root root 293 Oct 19 2004 /usr/src/kernels/2.6.9-78.0.8.EL-smp-x86_64/scripts/mkuboot.sh
-rwxr-xr-x 5 root root 3.0K Oct 19 2004 /usr/src/kernels/2.6.9-78.0.8.EL-smp-x86_64/scripts/ver_linux
-rwxr-xr-x 5 root root 4.4K Oct 19 2004 /usr/src/kernels/2.6.9-78.0.8.EL-smp-x86_64/scripts/makeman
-rwxr-xr-x 5 root root 47K Oct 19 2004 /usr/src/kernels/2.6.9-78.0.8.EL-smp-x86_64/scripts/kernel-doc
-rwxr-xr-x 5 root root 529 Oct 19 2004 /usr/src/kernels/2.6.9-78.0.8.EL-smp-x86_64/scripts/checkincludes.pl
-rwxr-xr-x 5 root root 54 Oct 19 2004 /usr/src/kernels/2.6.9-78.0.8.EL-smp-x86_64/scripts/Lindent
-rwxr-xr-x 5 root root 7.5K Oct 19 2004 /usr/src/kernels/2.6.9-78.0.8.EL-smp-x86_64/scripts/patch-kernel
我们这里只截取了几行,但事实上可能会输出上千条这样的记录。这时候你显然不能去处理每一条记录,你需要关注哪些文件比较大,这样只要清理几个比较大的文件,就可以释放很多磁盘空间了。 可是几千个记录中,找哪个文件比较大,仍然不容易。可以注意到,第5列显示的是文件的大小。 我们可以用sort命令来把这些记录排序。命令如下
sort -n -k 5 /tmp/find.txt 其中find.txt 是find命令输出的结果
-k代表以第5列排序,-n表示排序时把第五列作为数字比较