有没有一种简单的方法可以查看目录并说,对于每个以 az 开头的文件,打印这些文件的总大小?
例如
for i in {97..122}; du (something); done
即输出>>
a-123kb
b-22kb
...
z-1245kb
答案1
这可以通过通配符来实现
$ du [a-z]*
456 asdf.png
12 awk.trace
28 blink_image_resources_200_percent.pak
0 Books
请注意,如果由 glob 扩展的项目是目录,du
则将遍历该目录的内容,因此如果您只关心目录的总大小而不是项目的单独列表,则可能需要执行du -s [a-z]*
.如果您想要人类可读的后缀,例如k
或M
,请使用-h
选项。
当然,shell 喜欢bash
并且ksh
具有更细粒度的模式匹配, bash
具有extglob
shell 选项并globstar
用于递归遍历来匹配文件名。find
命令还可以用于递归和细粒度的文件名匹配,甚至排除目录,如
find . -maxdepth 1 -mindepth 1 -type f -exec du -s {} \;
还值得注意的是,大括号扩展{0..9}
不执行路径名扩展,即*
扩展为目录中已存在的内容,{0..9}
扩展为当前工作目录中可能存在或不存在的标记列表。