如何在 Linux 上查看/确定磁盘文件大小?

如何在 Linux 上查看/确定磁盘文件大小?

在 Windows 上,您可以看到文件/目录的实际大小和磁盘上的大小,磁盘上的大小取决于块大小。

我怎样才能在 Linux (mint) 上看到这个?

我的磁盘上有数千张不同大小的图片。

我想查看它们的实际大小以及它们在磁盘上占用的空间,尤其是目录。在 Windows 上,差异可能是千兆字节的浪费空间。

答案1

我想你正在寻找的是du。执行后du -s <directory>会显示目录内容占用了多少磁盘空间。du还可以单独计算目录中每个文件的大小,并告诉您它们的总内容有多大:

du -s --apparent-size <directory>

如果您想知道因块分配而产生的“浪费”空间量,只需从第一个命令的结果中减去第二个命令的结果即可。

注意:--apparent-size报告大小(以千字节为单位)。-b如果您想知道文件包含的确切字节数,则可以使用该标志。例如,如果您想知道需要通过网络发送多少字节(没有标头等)来传送文件,这非常有用。

答案2

磁盘上的大小:

du -s -B 1 *
du -s -B 1 * | cut -f 1

内容大小:

du -s --apparent-size -B 1 *
du -s --apparent-size -B 1 * | cut -f 1

-s不打印子目录
-B 1打印大小(以字节为单位)而不是多少 1kb

cut -f 1从输出中省略文件名


这是一个输出的脚本:
size of contents:xxxxx, size on disk: xxxxx, percentage wasted: xx.xx%, difference: xxxxx

dirName='.';
sizeOfContents=$(du -s --apparent-size -B 1 "$dirName" | cut -f 1);
sizeOnDisk=$(du -s -B 1 "$dirName" | cut -f 1);
echo size of contents:$sizeOfContents, size on disk: $sizeOnDisk, percentage wasted: $(echo "scale=2 ; 100 - 100*$sizeOfContents/$sizeOnDisk" | bc)%, difference: $(($sizeOnDisk-$sizeOfContents));

一行版本:

dirName='.'; sizeOfContents=$(du -s --apparent-size -B 1 "$dirName" | cut -f 1);sizeOnDisk=$(du -s -B 1 "$dirName" | cut -f 1);echo size of contents:$sizeOfContents, size on disk: $sizeOnDisk, percentage wasted: $(echo "scale=2 ; 100 - 100*$sizeOfContents/$sizeOnDisk" | bc)%, difference: $(($sizeOnDisk-$sizeOfContents));

相关内容