题
你可以排序的一个 ls 清单的名字?
解决方案
我LS排序由默认名称。什么是你看见了什么?
man ls
状态:
List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.
:
其他提示
对于一些简单的,你可以结合 LS 是排序。对于只是一个文件名列表:点击 的 LS -1 |排序强>
要以相反的顺序对它们进行排序:结果 的 LS -1 |排序-r 强>
这ls
coreutils
执行的区域识别强>排序缺省,并且因此可以产生在一些情况下令人惊讶的结果(例如,%foo
将bar
quux
和LANG=en_US
之间进行排序)。如果你想要一个ASCIIbetical排序,使用
LANG=C ls
中的* nix工具的好处是,你可以将它们组合起来:
ls -l | sort -k9,9
ls -l
的输出将是这样的
-rw-rw-r-- 1 luckydonald luckydonald 532 Feb 21 2017 Makefile
-rwxrwxrwx 1 luckydonald luckydonald 4096 Nov 17 23:47 file.txt
因此,与9,9
您的排序列9
达列9
,作为文件名。你必须提供在哪里停止,这是在这种情况下,同一列。列开始1
。
此外,如果要忽略上/下的情况下,添加到--ignore-case
sort命令。
注意: “一” 来AFTER “Z”:
$触摸A.TXT aa.txt文件Z.txt
$ LS
A.TXT Z.txt aa.txt文件
文件只由数字字符为不同的可以在这个数在它是由隔板之前的条件进行排序。
在这种情况下,下面的语法可以使用:
ls -x1 file | sort -t'<char>' -n -k2
示例:
ls -1 TRA*log | sort -t'_' -n -k2
TRACE_1.log
TRACE_2.log
TRACE_3.log
TRACE_4.log
TRACE_5.log
TRACE_6.log
TRACE_7.log
TRACE_8.log
TRACE_9.log
TRACE_10.log
从人页(对于bash LS):
按字母排序,如果没有-cftuSUX也不--sort的。
检查.bashrc
文件的别名。
的 ls
实用应该符合IEEE标准1003.1-2001年(POSIX.1
)其中指出:
22027:它应当排序的目录和非目录的操作数分别根据核对序列,在当前区域设置。
26027:通过默认的,格式是不确定的,但是 输出应按字母顺序排列 通过符号名称:
- 图书馆或对象名称,如果一个被指定
- 符号的名字
- 类型的符号
- 价值的象征
- 大小相关的符号,如果适用的话
LS为该目的-X工作的,如果你有别名ls以更有用的默认值。
In Debian Jessie, this works nice:
ls -lah --group-directories-first
# l=use a long listing format
# a=do not ignore entries starting with .
# h=human readable
# --group-directories-first=(obvious)
# Note: add -r for reverse alpha
# You might consider using lh by appending to ~/.bashrc as the alias:
~$ echo "alias lh='ls -lah --group-directories-first'" >>~/.bashrc
# -- restart your terminal before using lh command --