3

假设您必须在目录中找到第 4 个最小(非隐藏)文件的名称

执行此操作的正确命令是什么?假设我是一个只知道ls -l, head, tail, line, 和awk '{print}'语句的人。

4

2 回答 2

3

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

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

ls -rS | sed -n '4p'

或者,或者,

ls -rS | awk 'NR==4'
于 2013-03-19T11:20:53.540 回答
1

解析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)
于 2013-03-19T12:40:48.950 回答