du忽略隐藏文件

在使用 du 命令时,有时你可能需要忽略某些特定类型的文件或目录,例如隐藏文件(以点开头的文件)。默认情况下,du 会统计所有可读文件的信息,包括隐藏文件。如果你只想查看非隐藏文件或者指定的一些特殊文件类型,可以通过一些参数来实现。

使用 --exclude 参数

du 命令提供了一个非常灵活的参数 --exclude,可以用来排除某些文件或目录。通过结合使用这个选项和通配符,你可以方便地忽略隐藏文件。

示例 1: 忽略所有以点开头的文件

du --exclude='.*' /path/to/directory

上述命令会统计 /path/to/directory 下除隐藏文件外的所有文件大小。如果你只想查看目录本身的大小而不关心文件细节,可以使用 -s 参数:

du -sh --exclude='.*' /path/to/directory

这里 -s 表示只显示总计信息。

示例 2: 忽略多个特定隐藏文件

你也可以排除多个特定的文件或目录。例如,假设你想忽略 .git, .svn, 和 .bzr 目录:

du --exclude='.git' --exclude='.svn' --exclude='.bzr' /path/to/directory

示例 3: 排除整个隐藏目录

如果你想要排除整个以点开头的目录(如 ./.cache, ./.config 等),可以这样操作:

du --exclude='.*/*' /path/to/directory

这里使用通配符 * 会匹配所有在以点开头的目录下的文件和子目录。

使用 find 命令配合

除了 du 自身提供的选项,你还可以结合 find 命令来实现更复杂的过滤逻辑。比如:

find /path/to/directory -type f ! -name '.*' -exec du -h {} + | grep -v '^total'

这个命令先通过 find 查找所有非隐藏文件,然后执行 du -h 来统计这些文件的大小,并过滤掉总和行。

总结

使用 du --exclude='.*' 或者结合 find 命令可以灵活地忽略特定类型的文件或目录。根据你的具体需求选择合适的命令组合能够帮助你更精确地控制输出结果,避免不必要的统计信息干扰你的工作流程。