我的磁盘已满,其中有许多大文件,因此我只想查找磁盘上最新和最大的 20 个文件。我怎样才能做到这一点?
答案1
和zsh
:
ls -lrtd -- **/*(D.OL[1,20])
对于从最旧到最新排序的 20 个最大文件。
ls -lrtd -- **/*(D.OL[1,20]m-1)
相同,但仅限于最近 24 小时内最后修改的文件。最后一小时替换m-1
为。mh-1
ls -lSd -- **/*(D.om[1,20])
最新的 20 个文件,按大小排序(从小到大)。
ls -lSd -- **/*(D.om[1,20]LM+100)
相同,但仅限于大于 100 MiB 的文件。
请注意,L
glob 限定符适用于表观尺寸文件的,而不是他们的磁盘使用情况(例如据报道du
)。
答案2
查找最新的 20 个文件:
find . -type f -printf "%T@ %Tc %p\0" | sort -z -nr | head -z -n20
(改编自这里)
找到最大的 20 个:
find . -type f -printf "%s %p\0" | sort -z -nr | head -z -n20
或者,更简单
du -ba0 | sort -nr | head -z -n20
如果您希望文件以换行符分隔而不是零分隔,则可能需要在| tr '\0' '\n'
饼图末尾添加 at 。请注意,文件名可以包含换行符,因此这通常不是一个好主意;这就是为什么我在上面的所有示例中使用零字节分隔(文件名不能包含零字节)。