2010-11-10 31 views
5

我想按照字母順序將所有者從一個調用中排序到ls -l,並且找不到一種方法來完成它。我知道像ls-l |這樣的東西排序會對文件名進行排序,但我如何按順序排列所有者?在Unix中對ls-l所有者進行排序

回答

0

......怎麼

ls -l | cut -d ' ' -f 3 | sort | uniq 
0

試試這個:

ls -l | awk '{print $3, $4, $8}' | sort

它將打印的用戶名,組名和文件名。 (文件名不能包含空格)

ls -l | awk '{print $3, $4, $0}' | sort

這將打印的用戶名,組名稱和完整的ls -l輸出,用戶名排序第一,然後是組名,然後什麼的ls -l第一

+0

非常感謝。第二個是訣竅。 – brian 2010-11-10 04:30:33

+0

@brian沒問題。記住這是接受的答案呢? – Alex 2010-11-10 04:31:29

10

所有者是第三場版畫,所以使用-k 3

ls -l | sort -k 3 

您可以將這個想法擴展到排序基於其他領域,你可以有多個-k選擇。比如,也許你想通過所有者排序,然後按降序排列尺寸:

ls -l | sort -k 3,3 -k 5rn 
1

我不知道,如果你只想要業主或者由業主排序的全部信息。在前一種情況下,superfo的解決方案几乎是正確的。 另外,你需要從LS與TR除去重複空格的輸出,因爲否則削減使用它們作爲分隔符不會在所有的目錄工作。*

所以你到底這樣的:

ls -l | tr -s ' ' | cut -d ' ' -f 3 | sort | uniq 

*有些目錄必須在第二場和兩位數值的所有其他行有一個單一的數字得到一個額外的空格,以保留佈局。