假设您必须在目录中找到第 4 个最小(非隐藏)文件的名称
执行此操作的正确命令是什么?假设我是一个只知道ls -l
, head
, tail
, line
, 和awk '{print}'
语句的人。
From man ls
:-S
按大小降序对输出进行排序,-r
反转输出的顺序
所以我的解决方案看起来像
ls -rS | sed -n '4p'
或者,或者,
ls -rS | awk 'NR==4'
解析ls
是不安全的,因为处理文件名中的空格和换行符等奇怪字符既困难又容易出错。
我建议使用以下更强大的方法,因为它使用以空值结尾的行尾。
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)