在unix中找到最小文件的名称

时间:2013-03-19 11:16:12

标签: unix

假设您必须在目录

中找到第4个最小(非隐藏)文件的名称

这样做的正确命令是什么?假设我是一个只知道ls -lheadtaillineawk '{print}'声明的人。

2 个答案:

答案 0 :(得分:2)

man ls-S按大小递减对输出进行排序,-r反转输出的顺序

所以我的解决方案看起来像

ls -rS | sed -n '4p'

或者

ls -rS | awk 'NR==4'

答案 1 :(得分:0)

解析lsnot safe,因为处理文件名中的空格和换行符等奇怪字符很困难且容易出错。

我建议使用以下方法,因为它使用以null结尾的行结尾,因此更加健壮。

count=0
while IFS= read -r -d '' line; do
    ((++count == 4)) && echo "${line#* }" && break
done < <(find . -type f -maxdepth 1 -printf '%s %p\0' | sort -zn)