Bash

按使用者排序 ls 輸出

  • April 19, 2013

在 Linux 上,有沒有辦法按使用者對輸出進行****排序ls?我試圖實現的是這樣的:

user_a   file1 user_a   file2 user_b   another_file user_c this_file   user_c that_file user_d   file3 _ _ _   _ _ _

我知道像這樣的列表也會包含文件大小、權限等——我主要關心的是使用者的排序。會很方便的,不是嗎

到目前為止,我發現ls -l | sort -k 3按第三列排序,其中[如果使用ls -l]包含文件所有者[因此sort -k 4按組排序]。

但是如果文件所有者不在第三行怎麼辦?是否有另一種方法可以實現這一點,與列數無關


更新:我忘了提到我在 BASH 工作並嘗試從這裡開始堅持一段時間,這樣事情就不會變得更複雜。

從單個ls -l輸出中確定所有者名稱在哪一列,而不知道哪一列是不可能的。您可以嘗試將每列中的條目與passwd文件匹配,但不能保證您不會匹配組列或文件名列,它們都只能包含您在/etc/passwd.

如果你想使用ls,你可以執行程序兩次,一次 asls -l和一次 as ls -g。後者刪除所有者,因此通過根據其他資訊匹配行,您將能夠在沒有指定的情況下確定所有者名稱。然而,這不是我樂於在 bash shell 腳本中進行的練習。

引用自:https://unix.stackexchange.com/questions/72921