du 显示 * 和文件夹名称完全不同的文件夹大小

du 显示 * 和文件夹名称完全不同的文件夹大小

我正在尝试移动一些数据,首先我想确保大小合适。但是,如果我使用以下命令检查文件夹,我会遇到问题

du -sh  myfolder/
780M    myfolder/

du -sh *
..
71M     myfolder
..

我认为这可能与隐藏文件有关,但这个特定的文件夹里面没有任何内容。

我错过了什么吗?

答案1

很可能myfolder包含 709 MB 的文件,这些文件在按字典顺序排序之前的子目录中具有另一个硬链接myfolder。该du命令仅在第一次看到每个不同的文件时报告它,因此,如果一个文件在运行 覆盖的树内有多个链接du,则仅在首先遍历的目录下报告一次。

您可以通过以下几种方式查找硬链接:

  • find myfolder -links +1 -type fmyfolder列出在(+1表示“多个”)下至少有第二个硬链接的所有文件,无论该链接位于何处。
  • find . -samefile myfolder/foomyfolder/foo(使用 GNU find)列出当前目录下的所有硬链接。由于myfolder位于当前目录下,因此其中包括myfolder/foo其自身。
  • find -type f -links +1 -printf '%i %p\n' | sort -k1n(使用 GNU find)在当前目录下生成硬链接文件列表,按 inode 编号分组。如果两个文件位于同一文件系统上并且具有相同的 inode 号,则它们是相同的。

相关内容