将 --exclude 与 du 命令一起使用

将 --exclude 与 du 命令一起使用

这可能是基本的东西,但我无法让它发挥作用。我正在尝试使用 DU 来获取文件的总大小减去某些目录。我需要排除一个名为 的特定目录,uploads但不是每个名为 的目录uploads。例如,我的文件结构看起来有点像这样:

/store
  /uploads
    /junk_to_ignore
    /more_junk_to_ignore
  /user_one
    /uploads
  /user_two

我可以运行以下命令:

du -ch --exclude=uploads* 

它给了我减去所有“上传”目录的文件大小。但是,在尝试排除某些目录(及其所有子目录)时我失败了。我尝试过以下变体:

du -ch --exclude=./uploads*
du -ch --exclude='/full/path/to/uploads/*'

但似乎无法弄清楚。如何排除特定目录?

答案1

你几乎已经找到了:)

du -ch --exclude=./relative/path/to/uploads

笔记星号在末尾。星号代表全部“上传”下的子目录应该被省略 - 但不是直接在该目录中的文件。

答案2

要排除多个目录,只需再次传递 --exclude 标志即可。

du -ch --exclude=relative/path/to/uploads --exclude other/path/to/exclude

答案3

太棒了,要跳过虚拟文件系统,请执行以下操作:

du -hsx --exclude=/{proc,sys,dev,run} /*

答案4

如果您必须在 macOS 上,请使用以下命令安装 GNU Coreutils。

brew install coreutils

Coreutils 安装的大多数命令都以 为前缀g,因为它们在 macOS 上预安装了 BSD 同名命令。然后您可以执行以下操作。

gdu --exclude=Microsoft /Library/Fonts/

相关内容