如何用find、sort、ls命令查看家目录中大于10MB的文件并按大小降序排列
解决方法
你之前的问题是把sort和ls的顺序搞反了,而且直接给ls传管道输入的方式不对——ls不会默认读取管道里的文件名列表,得让find直接调用ls输出详细信息,再对输出结果排序。
直接用这条命令就行:
find ~ -type f -size +10M -exec ls -lh {} + | sort -rh -k 5
各部分作用:
find ~ -type f -size +10M:精准筛选家目录下所有大于10MB的普通文件-exec ls -lh {} +:把找到的文件批量交给ls -lh处理,输出你要的那种包含权限、所有者、可读大小、修改时间和文件名的格式sort -rh -k 5:按输出的第5列(也就是文件大小)做降序排序,-h参数能识别M、G这种人类可读的单位,不会按字符串排序出错
为啥之前的写法不行?
你之前用find | sort | ls的逻辑错了:先对纯文件名排序根本没用,而且ls不接受管道传过来的文件名当参数,自然会出问题。得先让ls输出带大小的详细内容,再针对大小列排序才对。
内容的提问来源于stack exchange,提问作者tseloskon
相关产品推荐
相关产品推荐

