Unix'ls'按名称排序

时间:2009-05-18 15:16:18

标签: unix ls

您可以按名称对ls商家信息进行排序吗?

13 个答案:

答案 0 :(得分:118)

我的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.

答案 1 :(得分:93)

对于简单的事情,您可以将 ls 排序结合使用。仅供参考文件名列表:
ls -1 |排序

按相反顺序对它们进行排序:
ls -1 | sort -r

答案 2 :(得分:29)

默认情况下,来自ls的<coreutils执行区域设置感知排序,因此在某些情况下可能会产生令人惊讶的结果(例如,%foo将排序在barquuxLANG=en_US之间。如果您想要ASCIIbetical排序,请使用

LANG=C ls

答案 3 :(得分:16)

* 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命令。

答案 4 :(得分:8)

注意:“a”在“Z”之后出现:

$ touch A.txt aa.txt Z.txt

$ ls

A.txt Z.txt aa.txt

答案 5 :(得分:4)

从手册页(对于bash ls):

  

如果没有-cftuSUX或--sort。

,则按字母顺序对条目进行排序

答案 6 :(得分:3)

检查.bashrc文件中的别名。

答案 7 :(得分:3)

ls实用程序应符合IEEE Std 1003.1-2001(POSIX.1),其中声明:

  

22027:它应根据当前语言环境中的整理顺序分别对目录和非目录操作数进行排序。

     

26027:默认情况下,格式未指定,但输出应按字母顺序按符号名称排序

     
      
  • 库或对象名称,如果指定了-A
  •   
  • 符号名称
  •   
  • 符号类型
  •   
  • 符号的价值
  •   
  • 与符号相关联的尺寸(如果适用)
  •   

答案 8 :(得分:3)

只有数字字符串不同的文件可以在此编号前面以分隔符开头的方式进行排序。

在这种情况下,可以使用以下语法:

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

答案 9 :(得分:1)

ls -X可以用于此目的,以防你将别名ls设置为更有用的默认值。

答案 10 :(得分:0)

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 --

答案 11 :(得分:0)

您可以尝试:

ls -lru

-u和-lt:按访问时间排序并显示;

答案 12 :(得分:0)

我使用以下命令获取了按名称排序的目录内容:

ls -h