是否有可能ls在Unix中使用列出子目录及其所有内容的总大小,而不是通常的4K(我假设)只是目录文件本身?IE
total 12K
drwxrwxr-x 6 *** *** 4.0K 2009-06-19 10:10 branches
drwxrwxr-x 13 *** *** 4.0K 2009-06-19 10:52 tags
drwxrwxr-x 16 *** *** 4.0K 2009-06-19 10:02 trunk
Run Code Online (Sandbox Code Playgroud)
在搜索了这些手册页后,我空洞地说.
mol*_*olf 1457
尝试类似的东西:
du -sh *
Run Code Online (Sandbox Code Playgroud)
简短版本:
du --summarize --human-readable *
Run Code Online (Sandbox Code Playgroud)
du:D isk U sage
-s:显示每个指定文件的摘要.(相当于-d 0)
-h:"人类可读"输出.使用单位后缀:B yte,K ibibyte(KiB),M ebibyte(MiB),G ibibyte(GiB),T ebibyte(TiB)和P ebibyte(PiB).(BASE2)
小智 306
du -sk * | sort -n将按大小对文件夹进行排序.想要清理空间有帮助..
小智 100
du -sh * | sort -h
Run Code Online (Sandbox Code Playgroud)
这将以人类可读的格式显示.
Jay*_*kra 50
以人类可读格式列出当前目录中的最大目录:
du -sh * | sort -hr
限制行数的更好方法是
du -sh * | sort -hr | head -n10
在哪里可以增加-nflag 的后缀以限制列出的行数
样品:
[~]$ du -sh * | sort -hr
48M app
11M lib
6.7M Vendor
1.1M composer.phar
488K phpcs.phar
488K phpcbf.phar
72K doc
16K nbproject
8.0K composer.lock
4.0K README.md
Run Code Online (Sandbox Code Playgroud)
它使阅读更方便:)
Seb*_*ebi 25
要以ls -lh格式显示,请使用:
(du -sh ./*; ls -lh --color=no) | awk '{ if($1 == "total") {X = 1} else if (!X) {SIZES[$2] = $1} else { sub($5 "[ ]*", sprintf("%-7s ", SIZES["./" $9]), $0); print $0} }'
Run Code Online (Sandbox Code Playgroud)
awk代码解释说:
if($1 == "total") { // Set X when start of ls is detected
X = 1
} else if (!X) { // Until X is set, collect the sizes from `du`
SIZES[$2] = $1
} else {
// Replace the size on current current line (with alignment)
sub($5 "[ ]*", sprintf("%-7s ", SIZES["./" $9]), $0);
print $0
}
Run Code Online (Sandbox Code Playgroud)
样本输出:
drwxr-xr-x 2 root root 4.0K Feb 12 16:43 cgi-bin
drwxrws--- 6 root www 20M Feb 18 11:07 document_root
drwxr-xr-x 3 root root 1.3M Feb 18 00:18 icons
drwxrwsr-x 2 localusr www 8.0K Dec 27 01:23 passwd
Run Code Online (Sandbox Code Playgroud)
Kei*_*ith 20
你想要的命令是'du -sk'du ="磁盘使用"
-k标志为您提供以千字节为单位的输出,而不是磁盘扇区的du默认值(512字节块).
-s标志仅列出顶级目录中的内容(即默认情况下的当前目录或命令行中指定的目录).在这方面,du具有相反的ls行为,这很奇怪.默认情况下,du将递归地为您提供每个子目录的磁盘使用情况.相反,ls只会在指定目录中提供列表文件.(ls -R为您提供递归行为.)
joh*_*ood 18
目录中文件夹和文件的有序 列表(按大小排列):
du -skh * | sort -hr
Run Code Online (Sandbox Code Playgroud)
包括隐藏文件:
du -skh .??* * | sort -hr
Run Code Online (Sandbox Code Playgroud)
解释:
该命令du估计磁盘使用情况。
-s摘要,如,不是递归的,只有此级别的文件/文件夹。-kh人类可读的,如 GB、MB、KB 等.......??*以点开头且.长度为 3 个或更多字符的名称(不包括.和..链接)。*.所有不以.开头的文件/文件夹du默认情况下首先显示较小的尺寸。我们将其称为两组文件(隐藏文件和普通文件),因此我们需要将sort结果再次组合。
-h考虑人类可读字符(人类数字,如 GB、MB 等)重新排序。-r颠倒顺序。笔记。其他答案包含大部分这些选项,但分散在不同的选项中,这里没有探索如何轻松包含隐藏文件/文件夹。
Kus*_*nda 13
将此shell函数声明放在shell初始化脚本中:
function duls {
paste <( du -hs -- "$@" | cut -f1 ) <( ls -ld -- "$@" )
}
Run Code Online (Sandbox Code Playgroud)
我调用它duls是因为它显示了两者的输出du和ls(按此顺序):
$ duls
210M drwxr-xr-x 21 kk staff 714 Jun 15 09:32 .
$ duls *
36K -rw-r--r-- 1 kk staff 35147 Jun 9 16:03 COPYING
8.0K -rw-r--r-- 1 kk staff 6962 Jun 9 16:03 INSTALL
28K -rw-r--r-- 1 kk staff 24816 Jun 10 13:26 Makefile
4.0K -rw-r--r-- 1 kk staff 75 Jun 9 16:03 Makefile.am
24K -rw-r--r-- 1 kk staff 24473 Jun 10 13:26 Makefile.in
4.0K -rw-r--r-- 1 kk staff 1689 Jun 9 16:03 README
120K -rw-r--r-- 1 kk staff 121585 Jun 10 13:26 aclocal.m4
684K drwxr-xr-x 7 kk staff 238 Jun 10 13:26 autom4te.cache
128K drwxr-xr-x 8 kk staff 272 Jun 9 16:03 build
60K -rw-r--r-- 1 kk staff 60083 Jun 10 13:26 config.log
36K -rwxr-xr-x 1 kk staff 34716 Jun 10 13:26 config.status
264K -rwxr-xr-x 1 kk staff 266637 Jun 10 13:26 configure
8.0K -rw-r--r-- 1 kk staff 4280 Jun 10 13:25 configure.ac
7.0M drwxr-xr-x 8 kk staff 272 Jun 10 13:26 doc
2.3M drwxr-xr-x 28 kk staff 952 Jun 10 13:26 examples
6.2M -rw-r--r-- 1 kk staff 6505797 Jun 15 09:32 mrbayes-3.2.7-dev.tar.gz
11M drwxr-xr-x 42 kk staff 1428 Jun 10 13:26 src
$ duls doc
7.0M drwxr-xr-x 8 kk staff 272 Jun 10 13:26 doc
$ duls [bM]*
28K -rw-r--r-- 1 kk staff 24816 Jun 10 13:26 Makefile
4.0K -rw-r--r-- 1 kk staff 75 Jun 9 16:03 Makefile.am
24K -rw-r--r-- 1 kk staff 24473 Jun 10 13:26 Makefile.in
128K drwxr-xr-x 8 kk staff 272 Jun 9 16:03 build
Run Code Online (Sandbox Code Playgroud)
说明:
该paste实用程序根据您提供的规范从其输入创建列.给定两个输入文件,它将它们并排放置,并使用制表符作为分隔符.
我们给它输出du -hs -- "$@" | cut -f1第一个文件(真正的输入流)和ls -ld -- "$@"第二个文件的输出.
在函数中,"$@"将评估所有命令行参数的列表,每个参数都用双引号括起来.因此,它将理解带有空格等的通配字符和路径名.
double minuses(--)表示命令行选项的结尾为du和ls.如果没有这些,他说duls -l会混淆du任何选项du是ls没有会混淆ls(即同时存在于公用事业和选项可能并不意味着同样的事情,这将是一个非常混乱).
在cut后du简单地削减了的第一列du -hs输出(尺寸).
我决定将du输出放在左边,否则我将不得不管理一个不稳定的右列(由于文件名的长度不同).
该命令不接受命令行标志.
这已经在两者bash和两者中进行了测试ksh93.它无法使用/bin/sh.
du -h --max-depth=1 . | sort -n -r
Run Code Online (Sandbox Code Playgroud)
这是我喜欢的
更新:我不喜欢上一个,因为它没有显示当前目录中的文件,它只列出目录。
/varubuntu 上的示例输出:
sudo du -hDaxd1 /var | sort -h | tail -n10
4.0K /var/lock
4.0K /var/run
4.0K /var/www
12K /var/spool
3.7M /var/backups
33M /var/log
45M /var/webmin
231M /var/cache
1.4G /var/lib
1.7G /var
Run Code Online (Sandbox Code Playgroud)
ncdu 诅咒 du
这个很棒的CLI实用程序使您可以轻松地以交互方式查找大文件和目录。
例如,在一个知名项目的树中,我们执行以下操作:
sudo apt-get install ncdu
ncdu
Run Code Online (Sandbox Code Playgroud)
结果如下:
然后,我在键盘上向下和向右输入以进入该/drivers文件夹,然后看到:
ncdu 在启动时只为整个树递归计算一次文件大小,因此效率很高。
“磁盘总使用量”与“表观大小”的比较类似于du,我在下面进行了解释:为什么“ du”的输出通常与“ du -b”有很大不同?
项目主页:https://dev.yorhel.nl/ncdu
相关问题:
在Ubuntu 16.04中测试。
ncdu 非互动用法
的另一个很酷的功能ncdu是,您可以先以JSON格式转储大小,然后再使用它们。
例如,要生成文件,请运行:
ncdu -o ncdu.json
Run Code Online (Sandbox Code Playgroud)
然后通过以下方式进行交互检查:
ncdu -f ncdu.json
Run Code Online (Sandbox Code Playgroud)
如果您要处理非常大而缓慢的文件系统(例如NFS),这将非常有用。
这样,您可以首先仅导出一次,这可能需要几个小时,然后浏览文件,退出,再次浏览等。
输出格式只是JSON,因此也很容易在其他程序中重用它,例如:
ncdu -o - | python -m json.tool | less
Run Code Online (Sandbox Code Playgroud)
揭示了一个简单的目录树数据结构:
[
1,
0,
{
"progname": "ncdu",
"progver": "1.12",
"timestamp": 1562151680
},
[
{
"asize": 4096,
"dev": 2065,
"dsize": 4096,
"ino": 9838037,
"name": "/work/linux-kernel-module-cheat/submodules/linux"
},
{
"asize": 1513,
"dsize": 4096,
"ino": 9856660,
"name": "Kbuild"
},
[
{
"asize": 4096,
"dsize": 4096,
"ino": 10101519,
"name": "net"
},
[
{
"asize": 4096,
"dsize": 4096,
"ino": 11417591,
"name": "l2tp"
},
{
"asize": 48173,
"dsize": 49152,
"ino": 11418744,
"name": "l2tp_core.c"
},
Run Code Online (Sandbox Code Playgroud)
在Ubuntu 18.04中测试。
| 归档时间: |
|
| 查看次数: |
710662 次 |
| 最近记录: |