在搜索占用最多空间的目录时如何排除目录?

Dav*_*ave 1 ls directory disk-usage rm

我正在使用 Ubuntu 14.04。我想弄清楚哪些目录占用了最多的空间,所以我正在运行这个命令

sudo du -a / | sort -n -r | head -n 100
Run Code Online (Sandbox Code Playgroud)

问题是,大多数返回的目录属于一个单独的分区,

1048580 /mnt/volume-nyc1-01/postgresql/9.5/main/base/16419/57411.6
Run Code Online (Sandbox Code Playgroud)

如何/mnt/volume-nyc1-01/从我的列表中排除分区?

ste*_*ver 6

来自man du(注意:这适用于 GNU du,这应该适用于您的情况):

--exclude=PATTERN
       exclude files that match PATTERN
Run Code Online (Sandbox Code Playgroud)

所以例如

sudo du -a --exclude='/mnt/volume-nyc1-01/*' / | sort -n -r | head -n 100
Run Code Online (Sandbox Code Playgroud)

但是,在这种情况下,更好的选择可能是使用

   -x, --one-file-system
          skip directories on different file systems
Run Code Online (Sandbox Code Playgroud)

选项例如

sudo du -ax / | sort -n -r | head -n 100
Run Code Online (Sandbox Code Playgroud)

sudo您的管道中的其他命令应该不是必需的)。

  • 还有 `ncdu`,它采用与 `du` 相同的排除选项,它提供了一个可浏览的磁盘使用情况概览。 (2认同)