我想要這樣的排序,大寫字母在小寫之前:
-rw-r--r--. 1 0 0 183 2014-10-14 20:17 ./CHECKSUMS.md5
-rw-r--r--. 1 0 0 185 2014-10-14 20:17 ./CHECKSUMS.asc
drwxr-xr-x. 2 0 0 4096 2014-10-14 18:01 ./a
-rw-------. 1 0 0 464140 2013-12-16 19:11 ./a/pam-1.1.8-x86_64-2mg.txz
drwxr-xr-x. 2 0 0 4096 2014-10-14 19:55 ./b
-rw-------. 1 0 0 464140 2014-10-14 19:55 ./b/pam-1.1.8-x86_64-2mg.txz
drwxr-xr-x. 2 0 0 4096 2014-10-14 18:00 ./c
drwxr-xr-x. 2 0 0 4096 2014-10-14 18:00 ./d
drwxr-xr-x. 2 0 0 4096 2014-10-14 18:00 ./e
drwxr-xr-x. 2 0 0 4096 2014-10-14 18:00 ./f
drwxr-xr-x. 2 0 0 4096 2014-10-14 18:00 ./g
我使用這個指令:
find -L . -print | sort -d | xargs ls -nld --time-style=long-iso
結果是:
drwxr-xr-x. 29 0 0 4096 2014-10-14 20:17 .
drwxr-xr-x. 2 0 0 4096 2014-10-14 18:01 ./a
-rw-------. 1 0 0 464140 2013-12-16 19:11 ./a/pam-1.1.8-x86_64-2mg.txz
drwxr-xr-x. 2 0 0 4096 2014-10-14 19:55 ./b
-rw-------. 1 0 0 464140 2014-10-14 19:55 ./b/pam-1.1.8-x86_64-2mg.txz
drwxr-xr-x. 2 0 0 4096 2014-10-14 18:00 ./c
-rw-r--r--. 1 0 0 183 2014-10-14 20:17 ./CHECKSUMS.md5
drwxr-xr-x. 2 0 0 4096 2014-10-14 18:00 ./d
drwxr-xr-x. 2 0 0 4096 2014-10-14 18:00 ./e
drwxr-xr-x. 2 0 0 4096 2014-10-14 18:00 ./f
drwxr-xr-x. 2 0 0 4096 2014-10-14 18:00 ./g
如何獲得我想要的排序順序?
答案1
檢查你的環境變數LC_COLLATE
。最簡單的事情就是使用指令locales
。如果需要,您可以將其設定為不同的值。例如,你可以這樣做(假設是 bash)
export LC_COLLATE="C"
這應該可以解決你的問題。
答案2
最簡單的是使用export LC_ALL=C,用ls、sort等製作腳本,然後回傳你喜歡的LC,在我的例子中是UTF8。