Ls
sort 和 ls - 為什麼不首先對大寫字母進行排序?
我想要這樣的排序,在小寫之前使用大寫字母:
-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
我怎樣才能得到我想要的排序順序?
最簡單的是使用 export LC_ALL=C,用 ls、sort 等製作腳本,然後返回給你最喜歡的 LC,在我的例子中是 UTF8。
檢查您的環境變數
LC_COLLATE
。最簡單的事情是使用命令locales
。如果需要,可以將其設置為不同的值。例如,你可以做(假設 bash)export LC_COLLATE="C"
那應該可以解決您的問題。