如何按终端中的所有者和组权限对目录内容进行排序?

时间:2014-11-09 18:41:45

标签: linux sorting terminal

在排序过程中,所有者权利优先于组权限。

我觉得像ls -la | sort -n

但是,第一个字母显示文件的类型会妨碍并计算。 如何根据所有者权利开始的第2列开始排序?(不是第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开头的列,然后输出管道进行排序。