我想创建一个bash脚本,在目录foo
中找到超过500mb的目录。
我有这个命令,它按照大小顺序查找foo目录。
du /foo/* | sort -n
这个问题是它包含父目录的大小。例如,输出将是:
...
442790 /foo/bar/baz/qux
442800 /foo/bar/baz
442880 /foo/bar
我希望输出只显示/foo/bar/baz/qux
。由于父目录包含/foo/bar/baz/qux
自己的文件大小,但实际上它们在排除/foo/bar/baz/qux
时是微小的文件夹。
一些伪代码:
if the current directory is greater than 500mb then
check next directory is parent to current directory (i.e `/foo/bar/baz` is parent of `/foo/bar/baz/qux`) then
takeaway size of parent from current.
if resulting size is greater than 500mb then
return row
else
go to next row
else
go to next row
else
go to next row
答案 0 :(得分:1)
使用GNU find
和GNU sort
:
find /some/dir -type d -exec du -hS {} + | sort -rh
du -S
打印除子目录之外的目录大小。