假设您必须在目录
中找到第4个最小(非隐藏)文件的名称这样做的正确命令是什么?假设我是一个只知道ls -l
,head
,tail
,line
和awk '{print}'
声明的人。
答案 0 :(得分:2)
从man ls
:-S
按大小递减对输出进行排序,-r
反转输出的顺序
所以我的解决方案看起来像
ls -rS | sed -n '4p'
或者
ls -rS | awk 'NR==4'
答案 1 :(得分:0)
解析ls
是not 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)