2013-08-24 252 views
2

我試圖找到一種方法來以不區分大小寫的方式打印ls命令的結果。不區分大小寫的unix ls命令

目前在ls命令的結果:

Apple 
Boy 
Chart 
Dock 
apples 
boys 
charts 
docks 

我想是這樣的:

Apple 
apples 
Boy 
boys 
Chart 
charts 
Dock 
docks 

這可能嗎?

+2

滑稽;我的挫折之一是我得到了不區分大小寫的排序,這使我生活中的日光變得困難,因爲我習慣於利用區分大小寫的版本來獲取在列表開始時以大寫字母開頭的文件,但是它們不要再出現了。這是因爲我使用了'en_US.utf8'語言環境,這大部分是正確的。所以,我同意Keith的大部分觀察。 –

回答

7

ls(至少如果您使用的是GNU coreutils版本; ls --version來檢查)根據當前語言環境對文件名進行排序。

一組可用的語言環境從系統而異(locale -a的列表),但我的系統是:

LC_COLLATE=en_US.utf8 ls 

aA巧立名目bB之前 - 雖然它可能不請按照您要查找的順序準確地

即使在ls列出多列中的文件時也可以工作,這與sort -f很難完成。

(I有$LC_COLLATE設置爲C具體使得語言環境敏感的排序在ASCII順序進行。)

+0

so @keith我做了一個快速的谷歌搜索,我不完全確定如何更改我的。我想你可能是正確的,這是我需要的,這是否應該在.bashrc文件中?它看起來像我的語言環境設置爲: LANG =「en_US.UTF-8」 LC_COLLATE =「en_US.UTF-8」 – Andrew

+0

@Andrew:這就像設置任何其他環境變量(並且不要忘記'export'它)。如果你總是需要相同的設置,那麼在你的'.bashrc'中添加適當的命令可能是一種好方法。請注意,您的語言環境也會影響shell通配符擴展('echo *'),甚至會影響'sort'命令。但是用'LC_COLLATE =「en_US.UTF-8」'你應該*得到你想要的順序。你在做什麼系統? –

+0

此時此刻我正在使用mac,但是在solaris機器上工作時發生的問題更多。 – Andrew

3

只需將結果輸入到sort -f即可。

+2

不適用於'ls -R' – mlt

0
# alias ll='(LC_COLLATE=en_US.utf8 && export LC_COLLATE && shopt -s nocaseglob && /bin/ls -alF --color=auto)' 
# ll 
+5

請解釋你的代碼。 – hgwhittle

0

作爲後續至[基思湯普森]的答案,我在Linux測試系統和LC_COLLATE = C沒有爲我工作,但LC_COLLATE =「en_US.UTF-8」沒有。我把我的啓動腳本如下:

export LANG=en_US.UTF-8 
export LC_COLLATE="en_US.UTF-8" 

這並沒有在OS X上運行

1

添加到的.profile: 別名LLG ='LS -ltr | grep的-i」

那麼你可以使用下面的命令: LLG 「周」

+0

你試過了嗎?這並不能完成這項工作。 – mpromonet