在排序过程中,所有者权利优先于组权限。
我觉得像ls -la | sort -n
但是,第一个字母显示文件的类型会妨碍并计算。 如何根据所有者权利开始的第2列开始排序?(不是第2栏,终端栏) 如果这是不可能的,如果有任何其他解决方案我的问题?
答案 0 :(得分:0)
您可以使用此awk(仅适用于gawk)程序来执行此操作:
NR==2,true {
arr[substr($0, 2)] = $0
}
END {
asorti(arr, sorted)
for (i in sorted)
print arr[sorted[i]]
}
以下是如何运行它:ls -l | awk -f prog.awk
它的作用:
NR==2,true {
取第二个和最后一个之间的每一行(省略列标题)
arr[substr($0, 2)] = $0
取整行并将其保存在名为arr
的关联数组中,索引与整行相同,但它没有第一个字母
END {
阅读所有行
asorti(arr, sorted)
按索引(gnu扩展名)对数组进行排序,并将排序后的数组存储在sorted
中。排序的数组由元素的位置引用,值是原始索引(没有第一个字母的行)
for (i in sorted)
print arr[sorted[i]]
迭代已排序的索引并从初始数组arr
中检索原始行。
此方法的优点是它保存了有关条目的所有信息(包括它是否是链接或目录或其他内容)。
答案 1 :(得分:0)
通过cut?
输出ls的输出ls -lA| cut -d ' ' -f2- | sort -n
cut
将保留所有以column2开头的列,然后输出管道进行排序。