我在我的一个网站目录上运行 du 命令,得到了两个不同的结果,我很困惑哪一个是准确的,以及为什么会有这么大的差异,这里是命令和输出。
du -hsc directory_name/
5.3G directory_name/
5.3G total
du -hsc directory_name/*
4.0K directory_name/announcements.php
4.0K directory_name/articles.php
1.2M directory_name/election2011
4.3M directory_name/error_log
78M directory_name/files
3.0G directory_name/php
3.1G total
谢谢
答案1
您能否使用下一行以易于阅读的格式发布命令和输出?
我怀疑尺寸根本就没什么不同......
当您输入“ du -hsc dir_name
”时,您询问的是“ ”的大小dir_name
。
但是当您输入“ du -hsc dir_name/*
”时,您是在询问“ dir_name
”内所有目录和文件的大小。因此“ ”产生的所有文件的总和du -hsc dir_name/*
应该等于“ ”的总和du -hsc dir_name
。
希望有所帮助。
编辑
我发现了以下内容(http://www.linfo.org/du.html):
“使用星号 ( * ) 通配符可以提供类似的报告,该通配符将匹配任何字符。例如,以下命令将列出以当前目录开头的树中的所有目录的大小:
杜*
但是,列出的文件只是父目录中的文件,而不是其子目录中的文件。此外,没有提供整个目录树的总数。
结合使用 -s 选项和星号通配符将导致 du 仅报告顶级目录本身中直接包含的文件和目录的名称和大小(而不列出其任何子目录及其中的文件的名称)。当然,每个列出的目录的大小都包括其所有文件和子目录(包括其中的所有文件)。例如,以下将提供有关以当前目录开头的目录树的报告:
du-hs *
通配符还可用于过滤输出,以仅列出名称以某些字符或字符序列开头、包含或结尾的项目。例如,以下内容将报告当前目录中名称以字母 s 开头的所有目录和文件的名称和大小,以及这些目录的所有级别子目录的名称和大小,无论它们的名称以什么开头:
du-hs*”
注意我加粗的地方。看起来通配符只获取父目录中的目录,并且没有提供总和。
答案2
如果 directory_name 有隐藏文件,则它们将在第一个命令中被计算,但不会计算在第二个命令中。模式 directory_name/* 不包含以 . 开头的任何文件(这包括目录 directory_name 的磁盘)。