我試圖找到一種方法來以不區分大小寫的方式打印ls命令的結果。不區分大小寫的unix ls命令
目前在ls命令的結果:
Apple
Boy
Chart
Dock
apples
boys
charts
docks
我想是這樣的:
Apple
apples
Boy
boys
Chart
charts
Dock
docks
這可能嗎?
我試圖找到一種方法來以不區分大小寫的方式打印ls命令的結果。不區分大小寫的unix ls命令
目前在ls命令的結果:
Apple
Boy
Chart
Dock
apples
boys
charts
docks
我想是這樣的:
Apple
apples
Boy
boys
Chart
charts
Dock
docks
這可能嗎?
ls
(至少如果您使用的是GNU coreutils版本; ls --version
來檢查)根據當前語言環境對文件名進行排序。
一組可用的語言環境從系統而異(locale -a
的列表),但我的系統是:
LC_COLLATE=en_US.utf8 ls
與a
和A
巧立名目b
和B
之前 - 雖然它可能不請按照您要查找的順序準確地。
即使在ls
列出多列中的文件時也可以工作,這與sort -f
很難完成。
(I有$LC_COLLATE
設置爲C
具體使得語言環境敏感的排序在ASCII順序進行。)
so @keith我做了一個快速的谷歌搜索,我不完全確定如何更改我的。我想你可能是正確的,這是我需要的,這是否應該在.bashrc文件中?它看起來像我的語言環境設置爲: LANG =「en_US.UTF-8」 LC_COLLATE =「en_US.UTF-8」 – Andrew
@Andrew:這就像設置任何其他環境變量(並且不要忘記'export'它)。如果你總是需要相同的設置,那麼在你的'.bashrc'中添加適當的命令可能是一種好方法。請注意,您的語言環境也會影響shell通配符擴展('echo *'),甚至會影響'sort'命令。但是用'LC_COLLATE =「en_US.UTF-8」'你應該*得到你想要的順序。你在做什麼系統? –
此時此刻我正在使用mac,但是在solaris機器上工作時發生的問題更多。 – Andrew
# alias ll='(LC_COLLATE=en_US.utf8 && export LC_COLLATE && shopt -s nocaseglob && /bin/ls -alF --color=auto)'
# ll
請解釋你的代碼。 – hgwhittle
作爲後續至[基思湯普森]的答案,我在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上運行
滑稽;我的挫折之一是我得到了不區分大小寫的排序,這使我生活中的日光變得困難,因爲我習慣於利用區分大小寫的版本來獲取在列表開始時以大寫字母開頭的文件,但是它們不要再出現了。這是因爲我使用了'en_US.utf8'語言環境,這大部分是正確的。所以,我同意Keith的大部分觀察。 –