「ls(1)」-

  LINUX MANUAL PAGES

列出目录内容

命令语法格式

ls [OPTION]… [FILE]…

命令描述

命令ls列出有关文件(任何类型的文件,包括目录)的信息。像往常一样,选项和文件参数可以任意混合。

对于非选项的命令行参数,如果是目录,缺省情况下,ls会列出目录的内容(不是递归列出),并省略文件名以“.”开头的文件;对于其他非选项参数,默认情况下,ls只列出文件名。如果没有指定非选项参数,那么ls在当前目录下运行,就好像使用参数’.’进行调用。

默认情况下,根据有效的语言环境设置,输出的文件及目录名按字母顺序排序。如果标准输出为终端,则按列进行输出(垂直排序),控制字符作为问号输出; 否则,输出每行输出一列,控制字符按原样输出。

因为ls是一个非常基本的程序,多年来积累了很多选项。在下面的部分中会介绍它们;在每个部分中,选项按字母顺序列出(忽略大小写)。将选项分为小节并不是一个十分准确的做法,因为一些选项会影响ls操作的多个方面。

下面会按不同的部分进行介绍这些选项。

命令行选项

列出哪些文件

下面的这些选项决定ls会为哪些文件列出信息。默认情况下,ls列出文件和命令行参数中任何目录里的内容,但是会忽略目录中文件名以’.’开头的文件。

-a, –all
列出所有的文件和目录,包括那些文件名以‘.’开始、默认会被忽略的文件。

-A, –almost-all
列出所有的文件和目录,包括那些文件名以“.”开始、默认会被忽略的文件。但是,会忽略“.”和“..”。选项–all (-a)会覆盖该选项。

-B, –ignore-backups
忽略目录中以“~”结尾的文件。该选项等价于–ignore=’*~’ –ignore=’.*~’组合。

-d, –directory
与其他类型的文件一样,列出目录名,而不是列出其内容。除非指定了–dereference-command-line(-H),–deference(-L)或–dereference-command-line-symlink-to-dir选项,否则不会解析命令行中列出的符号链接。

-H, –dereference-command-line
如果命令行参数指定了符号链接,则显示链接引用的目标的信息,而不是链接本身的信息。

–dereference-command-line-symlink-to-dir
不要解析符号链接,显示符号链接的信息。但是:如果命令行参数是一个指向目录的符号链接,则显示该目录的信息,而不是符号链接本身。当没有指定其他与解析符号链接相关的选项时,这是默认行为。(–classify (-F), –directory (-d), (-l), –dereference (-L), –dereference-command-line (-H)).

–group-directories-first
将文件之前的所有目录分组,然后使用指定的的排序方式(请参阅–sort选项)分别对目录和文件进行排序。也就是说,此选项指定主要排序键,而–sort选项指定辅助键。但是,使用–sort=none(-U)会完全禁用此选项。

–hide=PATTERN
在目录中,除非给出–all(-a)或–almost-all(-A),否则忽略文件名与PATTERN匹配的文件。该选项的作用类似于–ignore=PATTERN,不同的地方是如果还给出了–all(-a)或–almost-all(-A)选项,则该选项无效。

该选项在SHELL别名中很有用。例如,如果lx是ls –hide=’*~’的别名,并且ly是ls –ignore=’*~’的别名,则命令lx -A列出文件README~,而’ly -A’不会。

-I pattern, –ignore=pattern
在目录中,忽略文件名与pattern(非正则表达式)匹配的文件。与在SHELL中一样,文件名中的起始’.’在模式开始处与通配符不匹配。有时候多次给这个选项是有用的。例如,

# ls –ignore=’.??*’ –ignore=’.[^.]’ –ignore=’#*’

第一个选项忽略文件名以’.’开头且长度至少为3的文件,第二个选项忽略文件名以’.’开头且为两个字符的文件,但是’..’外,第三个选项忽略以’#’开头的名称。

-L, –dereference
显示符号链接的所指向的文件的信息时,而不是链接本身的信息。但是,即使使用此选项,ls仍会打印链接本身的名称,而不是链接指向的文件的名称。

-R, –recursive
递归显示所有目录中的内容。

显示哪些信息

这些选项会控制了显示的信息。默认情况下,只显示文件名。

–author
在生成长格式的目录列表时,列出每个文件的作者。在GNU/Hurd中,文件作者可能与其所有者不同,但在其他操作系统中,两者是相同的。

-D, –dired
在使用长列表格式(-l)时,在主输出之后打印另一行:

//DIRED// beg1 end1 beg2 end2 …

其中,begn和endn是无符号整数,用于记录输出中每个文件名的开头和结尾的字节位置。这使得Emacs很容易找到这些名称,即使它们包含不寻常的字符,如空格或换行符,也没有奇怪的搜索。

如果以递归方式(-R)列出目录,则为每个子目录名称输出一个类似偏移量的行:

//SUBDIRED// beg1 end1 …

最后输出一行:

//DIRED-OPTIONS// --quoting-style=word

后面的–quoting-style=word是引用样式。

下面是一个实际的例子:

# mkdir -p a/sub/deeper a/sub2


# touch a/f1 a/f2


# touch a/sub/deeper/file


# ls -gloRF –dired a


a:


total 8


-rw-r--r-- 1 0 Jun 10 12:27 f1


-rw-r--r-- 1 0 Jun 10 12:27 f2


drwxr-xr-x 3 4096 Jun 10 12:27 sub/


drwxr-xr-x 2 4096 Jun 10 12:27 sub2/

  a/sub:
  total 4
  drwxr-xr-x 2 4096 Jun 10 12:27 deeper/

  a/sub/deeper:
  total 0
  -rw-r--r-- 1 0 Jun 10 12:27 file

  a/sub2:
  total 0
//DIRED// 48 50 84 86 120 123 158 162 217 223 282 286
//SUBDIRED// 2 3 167 172 228 240 290 296
//DIRED-OPTIONS// --quoting-style=literal

请注意,上面在//DIRED//行上的偏移量分别对应了:f1,f2,sub,sub2,deeper, file。//SUBDIRED//行的偏移量分别对一个了:a, a/sub, a/sub/deeper, a/sub2。

以下是如何提取第五个条目名称(’deeper’)的例子,对应的偏移量是222和228:

# ls -gloRF –dired a > out


# dd bs=1 skip=217 count=6 < out 2>/dev/null; echo

deeper

请注意,虽然上面输出列表中的“deeper”条目的尾部包含了一个斜线,但dd的count值为6,没有选择尾部的斜线。但是,如果在ls中使用了–dired和–escape(-b)选项,并在文件名中包含特殊字符的文件上运行,在使用dd时,count值中注意要把反斜杠结算在内:

# touch ‘a b’


# ls -blog –dired ‘a b’

-rw-r–r– 1 0 Jun 10 12:28 a\ b


DIRED 30 34


DIRED-OPTIONS –quoting-style=escape

如果使用添加引号的引用样式(例如–quoting-style=c),则偏移量会包含引号。因此,请注意,用户可以通过环境变量QUOTING_STYLE选择引用样式。因此,使用–dired的应用程序应该在命令行中指定明确的–quoting-style=literal选项(又名-N或–literal),否则就需要解析带有转义字符的文件名。

–full-time
输出的长格式的目录列表,同时列出完整的时间。相当于使用–format=long和–time-style=full-iso

-g
显示长格式的目录列表,但不要显示所有者信息。

-G, –no-group
在长格式目录列表中禁止显示组信息。(这是一些非GNU版本中的ls中的默认设置,因此GNU版本的ls提供此选项以实现兼容性。)

-h, –human-readable
为每个文件或目录的大小添加一个大小字母,例如mebibytes的’M’。使用1024的倍数,而不是1000;’M’代表1,048,576字节。相当于–block-size=human-readable。如果你喜欢1000的倍数,可以使用–si选项。

-i, –inode
将每个文件的inode编号(也称为文件序列号和索引编号)打印在文件名的左侧。(该数字唯一标识特定文件系统中的每个文件。)

-l, –format=long, –format=verbose
除了每个文件的名称之外,还可以打印文件类型、文件权限位、硬链接数、所有者名称、组名、大小、时间戳,通常为修改时间戳。对于无法确定的信息,则会打印问号。

通常情况下,文件大小的格式为没有标点符号的字节数,但可以修改显示格式(参见「块大小」)。例如,使用选项-h打印一个简短的可读计数;指定–block-size=’1’选项,则用当前语言环境中的千位分隔符打印一个字节计数。

对于输出中列出的每个目录,以“total blocks”行作为开始,其中blocks是该目录中所有文件的总磁盘分配。当前默认的blocks的大小为1024字节,但可以进行修改(参见「块大小」)。计算出的blocks大小中可能包含了重复的硬连接,这可以说是一个缺陷。

对于文件类型,可以是以下字符之一:

‘-’,普通文件

‘b’,块特殊文件

‘c’,字符特殊文件

‘C’,高性能(“连续数据”)文件

‘d’,目录

‘D’,存在于Solaris 2.5及以上的DOOR文件。用于客户端和服务器的应用进程之间通信的文件。

‘l’,符号链接

‘M’,脱机(“迁移”)文件(Cray DMF)

‘n’,网络特殊文件(HP-UX)

‘p’,FIFO (命名管道)

‘P’,存在于Solaris 10及以上的端口文件

‘s’,套解字文件

‘?’,其他未知的文件类型

对于权限标志,输出中列出的文件权限位与符号模式规范类似(请参阅符号模式)。但是,ls将多个位组合成每组权限的第三个字符,含义如下所示:

‘s’,如果setuid或setgid位和相应的可执行位都设置了。

‘S’,如果setuid或setgid位设置了,但是可执行位没有设置。

‘t’,如果限制删除标志(或沾滞位),以及其他可执行位都设置。注意,限制删除标志是粘性位的另一个名称。参见
文件权限位

‘T’,如果限制删除标志(或沾滞位)设置了,但是其他可执行位没有设置。

‘x’,只设置了可执行为,但是上面提到的没有被设置。

‘-’,其他情况(什么都没有设置)。

文件模式位之后是一个单个字符,用于指定是否将“访问控制列表(ACL)”等替代访问方法应用于该文件。对于:

  • 当文件权限位之后的字符是空格时,表示不存在备用访问方法。
  • 当它是一个可打印字符时,则表示有这样一种方法。

在GNU ls中,使用“.”字符来指示具有安全上下文的文件,但没有其他替代访问方法。具有其他任何访问方法组合的文件都标有一个加号(“+”)字符。

-n, –numeric-uid-gid
生成的长格式目录列表,但是显示数字类型的用户ID和组ID,而不是所有者名和组名。

-o
产生长格式的目录列表,但不显示组信息。它相当于使用–format=long –no-group组合。

-s, –size
将每个文件的磁盘分配打印到文件名的左侧。这是文件使用的磁盘空间量,通常比文件大小多一点,但如果文件有空洞,则可能会少一些。

通常情况下,磁盘分配以1024字节为单位打印,但可以修改(参见块大小)。

对于从HP-UX系统通过NFS挂载到BSD系统的文件,此选项报告的大小是正确值的一半。在HP-UX系统上,它报告的大小是从BSD系统安装NFS的文件的正确值的两倍。这是由于HP-UX中的一个缺陷;它也会影响HP-UX中的ls程序。

–si
为每个大小附加一个SI样式的缩写,例如兆字节为’M’。使用1000的倍数,而不是1024;’M’代表1,000,000字节。该选项等同于–block-size=si。如果你喜欢1024的倍数,使用-h或–human-readable选项。

-Z, –context
如果没有找到,则显示SELinux安全上下文或’?’。当与-l选项一起使用时,将安全上下文打印到文件大小列的左侧。

输出排序

这些选项用于控制输出信息的排序。默认情况下是按照字符的ASCII码进行排序的。

-t, –sort=time
根据修改时间排序(mtime),最新的在第一个。参见文件时间戳

-c, –time=ctime, –time=status
如果正在使用长列表格式(例如-l,-o)输出,则打印状态更改时间(ctime)而不是mtime。当按时间显式排序(–sort=time或-t)或不使用长列表格式时,请根据ctime进行排序。请参阅文件时间戳

-u, –time=atime, –time=access, –time=use
如果正在使用长列表格式(例如–format=long),则打印上次访问的时间戳(atime)。当按时间显式排序(–sort = time或-t)或不使用长列表格式时,根据atime进行排序。请参阅文件时间戳

-r, –reverse
反转排序方法的任何内容。例如,按照反向字母顺序列出文件,最新的第一个,最小的第一个,其他的。

-S, –sort=size
根据文件大小排序,最大的显示在第一个。

-U, –sort=none
不要排序;按照它们存储在目录中的顺序列出文件。(不做任何其他无关的事情,对比-f选项。)这在列出内容非常多的目录时特别有用,因为不进行任何排序可以明显更快。

-f
类似于-U选项,不要排序;按照它们存储在目录中的顺序列出文件。但是也启用-a(列出所有文件)并禁用-l、–color、-s(如果它们是在-f之前指定的)。

-v, –sort=version
按版本名称和编号排序,小的优先。它的行为类似于默认排序,除了每个十进制数字序列在数字上被视为索引/版本号。查看「关于版本排序的详细信息

-X, –sort=extension
以文件扩展名(’.’后的字符)按字母顺序对目录中的内容进行排序; 没有扩展名的文件被排在第一位。

输出格式

下面的选项控制了输出的格式

-1, –format=single-column
每行列出一个文件。当标准输出不是终端时,这是ls的默认值。另请参阅-b和-q选项以禁止在文件名中直接输出换行符。

-C, –format=vertical
在列中列出文件,垂直排序。如果标准输出是终端,这是ls的默认值。它始终是dir(1)程序的默认设置。GNU实现的ls使用可变宽度的列来尽可能多的显示文件,以最少的行。

-x, –format=across, –format=horizontal
水平列出文件,但是垂直方向上是对齐显示的。对比-m选项。

-m, –format=commas
水平列出文件,每行用逗号和空格(‘, ’)进行分隔。

–color [=when]
指定是否使用颜色区分文件类型。参数when可以被省略,或者以下之一:

none,不使用颜色。这也是默认的。

auto,只有标准输出是终端时才显示颜色。

always,总是使用颜色。

指定–color等价于–color=always。如果通过管道将带有颜色的输出列表传递给分页程序(比如less),请使用-R选项将颜色代码传递给终端。

请注意,使用–color选项时,如果目录中的内容很多,可能会导致显著的性能损失,因为在默认设置中要求ls统计它列出的每个单个文件。但是,如果希望大部分文件类型着色,但可以没有其他着色选项(例如,可执行文件、孤立文件、粘性文件、其他可写入文件、功能)的情况下运行,请使用dircolors(1)像这样设置LS_COLORS环境变量,

# eval $(dircolors -p | perl -pe ‘s/^((CAP|S[ET]|O[TR]|M|E)\w+).*/$1 00/’ | dircolors -)

并且在具有dirent.d_type功能的文件系统上,每个命令行参数只能执行一次stat调用。

-F, –classify, –indicator-style=classify
为每个文件名添加一个字符,指出文件类型。如果是目录,则追加一个斜线’/’;符号链接追加一个’@’;FIFO则追加’|’;套接字追加’=’;DOOR文件则为’>’;常规文件则只显示文件名。另外,对于可执行的常规文件,附加“*”。除非指定了–dereference-command-line(-H),–deference(-L),–dereference-command-line-symlink-to-dir选项,否则不要解析命令行中列出的符号链接。

–file-type, –indicator-style=file-type
为每个文件名添加一个字符,指出文件类型。这与-F相似,但可执行文件不会进行标记。

–hyperlink [=when]
输出可以被某些终端识别的用于链接到文件的代码,使用’file://’URI格式。when可以省略,或者是以下之一:

none,不使用超链接,这是默认的。

auto,如果标准输出是终端,则使用超链接。

always,总是使用超链接。

指定–hyperlink和no时相当于–hyperlink=always。

–indicator-style=word
将字符指示符与样式word追加到条目名称中,如下所示:

‘none’,不追加任何字符指示符;这是默认的。

‘slash’,将斜线(/)追加到目录的后面。等价于-p。

‘file-type’,将斜线(/)追加到目录的后面;符号链接追加一个’@’;FIFO则追加’|’;套接字追加’=’;常规文件则只显示文件名。等价于–file-type

‘classify’,将星号(*)追加到常规可执行文件后面,另一方面就和‘file-type’一样了。等同于-F(–classify)选项。

-k, –kibibytes
将默认块大小设置为其1024字节的正常值,覆盖环境变量中的任何相反规格(请参阅块大小)。该选项又被–block-size,-h,–human-readable,–si选项覆盖。

-k或–kibibytes选项会影响由-l和类似选项写入的每个目录块计数,以及由-s或–size选项写入的大小。它不会影响由-l写入的文件大小。

-p, –indicator-style=slash
将斜线(‘/’)追加到文件名后面。

-T cols, –tabsize=cols
假设每个制表符都是cols宽。缺省值为8。ls在输出中尽可能使用制表符,以提高效率。如果cols为零,则表示不要使用制表符。

某些终端仿真程序可能无法正确地将列对齐非ASCII字节后面的TAB右侧。可以通过使用-T0选项或在的环境中设置TABSIZE=0来避免此问题,以告诉ls使用空格对齐,而不是制表符。

-w cols, –width=cols
假设屏幕是列宽为cols。如果可能的话,默认取自终端设置; 否则使用环境变量COLUMNS(如果已设置); 否则默认值为80。对于cols值’0’,输出行的长度没有限制,并且单个输出行将用空格而不是制表符分隔。

格式化文件时间戳

默认情况下,文件时间戳以缩略形式列出。使用诸如“Mar 30 2002”之类的日期来表示非最近的时间戳;对于最近的时间戳,使用诸如“Mar 30 23:45”之类的没有年份的日期和时间的格式来表示。这种格式可以根据当前语言环境进行更改,如下所述。

如果时间戳在半年以内,则认为它是近期的,并且未来不会过期。如果今天的时间戳没有以最近的形式列出,而时间戳是将来的时间,这你的系统中可能有出现了时钟偏移问题,这可能会破坏依赖文件时间戳的程序,如make。请参阅「文件时间戳」。

根据由TZ环境变量指定的时区规则来列出时间戳,或者如果未设置TZ,则按照系统默认规则列出时间戳。请参阅GNU C库参考手册中的使用TZ指定时区

以下选项更改打印文件时间戳的方式:

–time-style=style
按风格style列出时间戳。style应该是以下之一:

+format,使用格式format列出时间戳,格式format的用法类似于date(1)命令的格式参数。例如,–time-style=”+%Y-%m-%d %H:%M:%S”会使ls显示’2002-03-30 23:45:56’之类日期格式。与date(1)一样,格式format的解释受LC_TIME语言环境类别的影响。

如果格式format包含由换行符分隔的两个字符串,则前者用于非最近的文件,后者用于最近的文件;如果希望输出列排成一列,则可能需要以两种格式之一插入空格。

full-iso,使用类似ISO 8601的日期、时间、时区组件,以纳秒为精度完整列出时间戳,例如’2002-03-30 23:45:56.477817180 -0700’。此样式相当于‘+%Y-%m-%d %H:%M:%S.%N %z’。

这很有用,因为时间输出中包含了操作系统中能提供的所有信息。例如,这可以帮助解释make的行为,因为GNU make使用完整的时间戳来确定文件是否过期。

long-iso,以分钟为精度列出ISO 8601日期、时间分量,例如’2002-03-30 23:45’。该时间戳比’full-iso’样式的时间戳短,通常对于日常工作来说足够了。此样式相当于‘+%Y-%m-%d %H:%M’。

iso,为非近期的时间戳使用ISO 8601日期(例如’2002-03-30’)格式;而近期时间戳,则使用与ISO 8601的月、日、小时、分钟类似的格式(例如,’03-30 23:45’)。这些时间比’long-iso’时间标记更难看一点,但它们占据的空间少,并且它们的简洁性有助于ls输出适合用与传统的80列的输出行。以下两个ls调用是等价的:

# newline=’





# ls -l –time-style=”+%Y-%m-%d $newline%m-%d %H:%M”


# ls -l –time-style=”iso”

locale,以时区相关的形式列出时间戳。例如,芬兰的语言环境中,可能会以如’maalis 30 2002’的形式列出非最近的时间戳;以’maalis 30 23:45’的形式列出最近的时间戳。依赖于区域的时间戳通常比’iso’时间戳消耗更多的空间,并且程序难以解析,因为区域设置约定差别很大,但对于许多人来说它们更容易阅读。

语言环境类别LC_TIME指定了时间戳的格式。默认的POSIX语言环境使用’Mar 30 2002’和’Mar 30 23:45’等时间戳;在这个语言环境中,以下两个ls调用是等价的:

# newline=’





# ls -l –time-style=”+%b %e %Y$newline%b %e %H:%M”


# ls -l –time-style=”locale”

其他语言环境的行为不同。例如,在德语语言环境中,–time-style=’locale’可能等同于–time-style=”+%e. %b %Y $newline%e. %b %H:%M”,并且可能会生成像‘30. Mär 2002 ’和‘30. Mär 23:45’这样的时间戳。

posix-style,如果LC_TIME语言环境类别是POSIX,则列出POSIX区域设置的时间戳,否则输出style时间戳。例如,在POSIX语言环境中,’posix-long-iso’样式会列出’Mar 30 2002’和’Mar 30 23:45’等格式的时间戳,其他的则类似于’2002-03-30 23:45’。

可以使用环境变量TIME_STYLE来指定–time-style选项的默认值;如果未设置TIME_STYLE,则默认样式为“locale”。GNU Emacs 21.3和更高版本使用–dired选项,因此可以解析任何日期格式,但是如果使用Emacs 21.1或21.2并指定非POSIX语言环境,则可能需要设置’TIME_STYLE=”posix-long-iso”。

为了避免某些拒绝服务攻击,可能会将超过1000字节的时间戳视为错误。

格式化文件名

这些选项更改文件名称本身的打印方式。

-b, –escape, –quoting-style=escape
使用字母和八进制反斜杠序列在文件名称中引用不可打印的字符,正如C中使用的那些字符。

-N, –literal, –quoting-style=literal
不要引用文件名称。但是,如果输出是终端,并且未指定–show-control-chars选项,则使用问号代表非打印字符。

-q, –hide-control-chars
在文件名中打印问号,而不是非图形字符。如果输出是终端,并且程序是ls,则这是默认值。

-Q, –quote-name, –quoting-style=c
将文件名用双引号括起来,并引用打印字符,正如C中所示。

–quoting-style=word

使用样式word来引用文件名和其他可能包含任意字符的字符串。word应该是以下之一:


literal
按原样输出字符串;这与-N或–literal选项相同。


shell
如果它们包含SHELL元字符或引起模糊输出,则为SHELL引用这些字符串。引用适用于像bash这样兼容POSIX的SHELL,但它并不总是适用于不兼容的SHELL,例如csh。


shell-always
为SHELL引用字符串,即使它们通常不需要引用。


shell-escape
像’shell’一样,但也会使用适用于大多数SHELL的POSIX提出的
$”语法来引用不可打印的字符。


shell-escape-always
像’shell-escape’一样,但是引用字符串,即使它们通常不需要引用。


c
像’shell-escape’一样,但是引用字符串,即使它们通常不需要引用


escape
像为C字符字符串文字那样引用字符串,除了省略周围的双引号字符;这与-b或–escape选项相同。


clocale
像C字符字符串一样引用字符串,除了使用适合区域设置的引号。


locale
像C语言字符串文字一样引用字符串,除了使用与语言环境相适应的引号外,在默认的C语言环境中引用’像这样’而不是”像这样”。这在许多显示器上看起来更好。

可以使用环境变量QUOTING_STYLE指定–quoting-style选项的默认值。如果未设置该环境变量,则当输出为终端时,默认值为’shell-escape’,否则为’literal’。

–show-control-chars
在文件名中按原样打印非图形字符。除非输出是终端,并且程序是ls,否则这是默认值。

其他选项

和大多数命令一样,ls也支持如下的基本选项:

–help
显示帮助信息并退出。

–version
显示版本信息并退出。

注意事项

关于“版本排序”的详细信息

版本排序处理的文件名通常包含索引或版本号信息。标准的排序通常不会产生预期的效果,因为它是按照逐个字符进行比较排序的。如果浏览的目录中包含许多带有索引/版本号的文件,版本排序特别有用:

# ls -1 # ls -1v

abc.zml-1.gz abc.zml-1.gz

abc.zml-12.gz abc.zml-2.gz

abc.zml-2.gz abc.zml-12.gz

版本排序字符串进行比较,如果ver1和ver2是版本号,前缀(prefix)和后缀(suffix)匹配正则表达式(\.[A-Za-z~][A-Za-z0-9~]*)*,那么ver1 < ver2意味着由“prefix ver1 suffix”组成的文件名会排在“prefix ver2 suffix”前面。

还要注意,数字部分的前导零被忽略:

# ls -1 # ls -1v

abc-1.007.tgz abc-1.01a.tgz

abc-1.012b.tgz abc-1.007.tgz

abc-1.01a.tgz abc-1.012b.tgz

版本排序功能是使用gnulib的filevercmp函数实现的,它有一些值得注意的地方:

  1. LC_COLLATE被忽略,这意味着ls -vsort -V在排序非数字前缀时,与把LC_COLLATE语言环境类别被设置为’C’是相同的。

  1. 一些后缀与上面提到的正则表达式不匹配。因此,这些示例可能无法按的预期排序。比如:

abc-1.2.3.4.7z

abc-1.2.3.7z

abc-1.2.3.4.x86_64.rpm

abc-1.2.3.x86_64.rpm

如上所述。

退出状态

0 成功。

1 次要问题。例如,访问未指定为命令行参数的文件或目录发生失败时。在列出主动删除或重命名条目的目录时会发生这种情况。

2 严重的问题。例如,内存耗尽,选项无效,无法访问指定为命令行参数的文件或者目录,或无法目录循环。

相关手册

dir(1), vdir(1)

查看在线手册:http://www.gnu.org/software/coreutils/ls

查看info手册:info ‘(coreutils) ls invocation’

参考文献

  • man 1 ls, version GNU coreutils 8.26

更新日志

  • 06/16/2018 创建文章