在 Mac 上的 Bash 上,可以执行类似的操作
cd # go to home directory
ls -d */
获取主目录中文件夹的名称。
我们可以使用
du -sh Documents
以人类可读形式获取文件夹大小的大小。
我尝试过类似的东西
ls -d */ | xargs du -sh
但它不起作用,因为某些目录具有该名称Tmp Files
(用空格分隔的两个单词),这使其成为du -sh Tmp Files
.
是否可以对此进行修改,或者是否有一种更简单的方法来处理du -sh
所有顶级文件夹以及总计?
答案1
您可以避免 xargs:
du -sc */
仅当您有数千个目录以避免“命令行太长”错误时,使用xargs
才有用(但随后将不会有完整的总计,只有每次调用du
by的部分总计xarg
)。
对于其他命令,为了避免错误解析文件名xargs
,请用空值而不是空格或换行符分隔它们:
printf '%s\0' * | xargs -0 du -s
(printf
将循环遍历其参数并在末尾使用 NUL 打印它们,并xarg
由于其选项而在 NUL 上拆分-0
)。这假设它printf
是一个内置的 shell (bash),使用二进制文件会有通常的行长度限制。
答案2
总计将是
du -s .
以及各个文件夹(以及可能的文件)的大小
du -s * .*
仅文件夹
du -s */ .*/