Abd*_*red 1322 command-line ls disk-usage
我试图通过使用ls带有选项的命令来获取目录(包含目录和子目录)的大小l。它似乎适用于文件 ( ls -l file name),但如果我尝试获取目录的大小(例如,ls -l /home),我只会得到 4096 字节,尽管总的来说它要大得多。
sam*_*sam 1817
du -sh file_path
解释
du( d isc u sage) 命令估计 file_path 空间使用选项-sh是(来自man du):
-s, --summarize
display only a total for each argument
-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)
Run Code Online (Sandbox Code Playgroud)
要检查多个目录并查看总数,请使用du -sch:
-c, --total
produce a grand total
Run Code Online (Sandbox Code Playgroud)Pac*_*ist 400
只需使用以下du命令:
du -sh -- *
Run Code Online (Sandbox Code Playgroud)
将以人类可读的格式为您提供当前目录中所有非隐藏目录、文件等的累积磁盘使用情况。
您可以使用该df命令来了解包含该目录的文件系统中的可用空间:
df -h .
Run Code Online (Sandbox Code Playgroud)
Chr*_*pie 258
du是你的朋友。如果您只想知道目录的总大小,请跳入该目录并运行:
du -hs
Run Code Online (Sandbox Code Playgroud)
如果您还想知道哪些子文件夹占用了多少磁盘空间?!您可以将此命令扩展为:
du -h --max-depth=1 | sort -hr
Run Code Online (Sandbox Code Playgroud)
这将为您提供所有子文件夹的大小(级别 1)。输出将被排序(最大的文件夹在顶部)。
Teq*_*ue5 103
du使用起来可能很复杂,因为您似乎必须传递 100 个参数才能获得不错的输出。弄清楚隐藏文件夹的大小甚至更难。
让您的生活变得轻松和使用ncdu。
您可以获得易于浏览的每个文件夹摘要。
小智 29
该du命令显示文件的磁盘使用情况。
该-h选项以人类可读的形式显示结果(例如,4k、5M、3G)。
du -h (file name)
Run Code Online (Sandbox Code Playgroud)
小智 26
以上所有示例都会告诉您磁盘上数据的大小(即特定文件使用的磁盘空间量,通常大于实际文件大小)。在某些情况下,如果数据并未实际存储在此特定磁盘上并且仅存在 inode 引用,则这些不会为您提供准确的报告。
在您的示例中,您在单个文件上使用了 ls -l,它将返回文件的实际大小,而不是它在磁盘上的大小。
如果您想知道实际文件大小,请在 du 中添加 -b 选项。
du -csbh .
Run Code Online (Sandbox Code Playgroud)
mpe*_*pen 18
df -h .; du -sh -- * | sort -hr
Run Code Online (Sandbox Code Playgroud)
这显示您在当前驱动器上剩余多少磁盘空间,然后告诉您每个文件/目录占用了多少。例如,
Filesystem Size Used Avail Use% Mounted on
/dev/sdb2 206G 167G 29G 86% /
115M node_modules
2.1M examples
68K src
4.0K webpack.config.js
4.0K README.md
4.0K package.json
Run Code Online (Sandbox Code Playgroud)
小智 12
这是您的 .bash_aliases 的函数
# du with mount exclude and sort
function dusort () {
DIR=$(echo $1 | sed 's#\/$##')
du -scxh $(mount | awk '{print $3}' | sort | uniq \
| sed 's#/# -- exclude=/#') $DIR/* | sort -h
}
Run Code Online (Sandbox Code Playgroud)
示例输出:
$ dusort /
...
0 /mnt
0 /sbin
0 /srv
4,0K /tmp
728K /home
23M /etc
169M /boot
528M /root
1,4G /usr
3,3G /var
4,3G /opt
9,6G total
Run Code Online (Sandbox Code Playgroud)
对于子目录:
$ dusort .
$ dusort /var/log/
Run Code Online (Sandbox Code Playgroud)
Edu*_*scu 11
sudo ls -1d */ | sudo xargs -I{} du {} -sh && sudo du -sh
Run Code Online (Sandbox Code Playgroud)
小智 10
递归查找当前目录下的所有文件并总结它们的大小:
find -type f -print0 | xargs -0 stat --print='%s\n' | awk '{total+=$1} END {print total}'
Run Code Online (Sandbox Code Playgroud)
这是一个可以使用的 POSIX 脚本:
ls -A -R -g -o "$@" | awk '{n1 += $3} END {print n1}'
Run Code Online (Sandbox Code Playgroud)
注意du打印一个目录在介质上所占的空间,通常大于目录中所有文件的总大小,因为du考虑到存储在介质上的所有辅助信息的大小来组织目录与文件系统格式。
如果文件系统是可压缩的,则du可能会输出比所有文件的总大小还要小的数字,因为文件可能会被文件系统内部压缩,因此它们在媒体上占用的空间比它们包含的未压缩信息更少。如果有稀疏文件,则相同。
如果目录中有硬链接,则du可能会打印较小的值,因为目录中的几个不同文件引用了介质上的相同数据。
要获得目录中所有文件的直接总大小,可以使用以下单行 shell 表达式(假设是 GNU 系统):
find . ! -type d -print0 | xargs -r0 stat -c %s | paste -sd+ - | bc
Run Code Online (Sandbox Code Playgroud)
甚至更短:
find . ! -type d -printf '%s\n' | paste -sd+ - | bc
Run Code Online (Sandbox Code Playgroud)
它只是将目录(及其递归子目录)中所有非目录文件的大小一一求和。请注意,对于符号链接,它报告符号链接的大小(而不是符号链接指向的文件的大小)。
小智 6
您可以使用
du -sh directory/
和
du -sh filename
知道文件夹或文件占用的空间。
df -h
将以人类可读的格式显示磁盘使用情况 -h 这样做。
还有一个基于 gui 的程序称为Disk Usage Analyzer.
| 归档时间: |
|
| 查看次数: |
2807622 次 |
| 最近记录: |