在 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));