我想要这样的排序,大写字母在小写之前:
-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。