2009-05-18 72 views
81

您可以按名稱排序ls列表嗎?Unix的'ls'按名稱排序

+9

如果它不是由名不帶任何參數排序,你可能要檢查是否LS已被別名別名,或者只是使用完全路徑調用它,這將消除存在的任何別名。 – tvanfosson 2009-05-18 15:23:18

+0

gnu-coreutils ls默認排序。你使用的是什麼系統(和其他人一樣) – 2009-05-18 15:32:27

+0

你確定要求按名稱排序,而不是按類型排序(即目錄先然後是文件)? – curtisk 2009-05-18 16:24:44

回答

97

默認情況下,我的ls按名稱排序。你在看什麼?

4

從man頁面(對於bash LS):

按字母排序,如果沒有-cftuSUX也不--sort的。

75

簡單的東西,你可以結合LS排序。僅用於文件名列表:
ls -1 |排序

要以相反的順序進行排序:
LS -1 |排序-r

8

注意: 「一」 來AFTER 「Z」:

$觸摸A.TXT aa.txt文件Z.txt

$ LS

A.TXT Z.txt aa.txt

3

檢查您的.bashrc文件中的別名。

10

的* nix的工具的好處是,你可以將它們組合起來:

ls -l | sort -k9,9 

ls -l輸出將看起來像這樣

-rw-rw-r-- 1 luckydonald luckydonald 532 Feb 21 2017 Makefile 
-rwxrwxrwx 1 luckydonald luckydonald 4096 Nov 17 23:47 file.txt 

因此,與9,9您排序列9達列9 ,是文件名。您必須提供停止位置,在這種情況下,這是相同的列。這些列以1開頭。

此外,如果您要忽略大寫/小寫,請將--ignore-case添加到sort命令。

22

lscoreutils執行區域識別排序缺省,並且因此可以產生在一些情況下令人驚訝的結果(例如,%fooLANG=en_USbarquux之間進行排序)。如果你想要一個ASCIIbetical排序,使用

LANG=C ls 
1

ls實用程序應符合IEEE標準1003.1-2001(POSIX.1)規定:

22027:應目錄和非目錄操作數分別排序根據當前語言環境中的整理順序。

26027:默認情況下,該格式是不確定的,但輸出應由符號名稱的字母順序排序:如果-A指定

  • 符號名
    • 庫或對象名稱,
    • 符號類型
    • 符號
    • 與符號相關聯的值的大小,如果適用的話
    0

    只有數字字符串不同的文件纔可以在該數字的前面加上分隔符的情況下對該數字進行排序。

    在這種情況下,下面的語法,可以用:

    ls -x1 file | sort -t'<char>' -n -k2 
    

    例子:

    ls -1 TRA*log | sort -t'_' -n -k2 
    
    TRACE_1.log 
    TRACE_2.log 
    TRACE_3.log 
    TRACE_4.log 
    TRACE_5.log 
    TRACE_6.log 
    TRACE_7.log 
    TRACE_8.log 
    TRACE_9.log 
    TRACE_10.log 
    
    0
    In Debian Jessie, this works nice: 
    
    ls -lah --group-directories-first 
    
    # l=use a long listing format 
    # a=do not ignore entries starting with . 
    # h=human readable 
    # --group-directories-first=(obvious) 
    # Note: add -r for reverse alpha 
    
    # You might consider using lh by appending to ~/.bashrc as the alias: 
    ~$ echo "alias lh='ls -lah --group-directories-first'" >>~/.bashrc 
    # -- restart your terminal before using lh command --