是否可以按 titlepage_1.pdf 在 titlepage_19.pdf 之前的顺序查看此输出?
$ ls
allTitlepage.pdf titlepage_12.pdf titlepage_19.tex titlepage_26.pdf titlepage_32.tex titlepage_4.tex
allTitlepage.tex titlepage_12.tex titlepage_1.pdf titlepage_26.tex titlepage_33.pdf titlepage_5.pdf
assignment.pdf titlepage_13.pdf titlepage_1.tex titlepage_27.pdf titlepage_34.pdf titlepage_5.tex
assignment.tex titlepage_13.tex titlepage_20.pdf titlepage_27.tex titlepage_34.tex titlepage_6.pdf
graphicsAssignment2.pdf titlepage_14.pdf titlepage_20.tex titlepage_28.pdf titlepage_35.pdf titlepage_6.tex
graphicsAssignment2.tex titlepage_14.tex titlepage_21.pdf titlepage_28.tex titlepage_35.tex titlepage_7.pdf
README.md titlepage_15.pdf titlepage_21.tex titlepage_29.pdf titlepage_36.pdf titlepage_7.tex
thesisTitlepage.pdf titlepage_15.tex titlepage_22.pdf titlepage_29.tex titlepage_36.tex titlepage_8.pdf
thesisTitlepage.tex titlepage_16.pdf titlepage_22.tex titlepage_2.pdf titlepage_37.pdf titlepage_8.tex
titlepage_0.pdf titlepage_16.tex titlepage_23.pdf titlepage_2.tex titlepage_37.tex titlepage_9.pdf
titlepage_0.tex titlepage_17.pdf titlepage_23.tex titlepage_30.pdf titlepage_38.pdf titlepage_9.tex
titlepage_10.pdf titlepage_17.tex titlepage_24.pdf titlepage_30.tex titlepage_38.tex titlepage_one.pdf
titlepage_10.tex titlepage_18.pdf titlepage_24.tex titlepage_31.pdf titlepage_3.pdf titlepage_one.tex
titlepage_11.pdf titlepage_18.tex titlepage_25.pdf titlepage_31.tex titlepage_3.tex titlepage_two.tex
titlepage_11.tex titlepage_19.pdf titlepage_25.tex titlepage_32.pdf titlepage_4.pdf
答案1
使用开关 -v [文本中版本号的自然排序]
ls -v
如果你想使用单列
ls -1v
答案2
输出已排序。根据ls
手册页:
如果未指定 -cftuvSUX 或 --sort,则按字母顺序对条目进行排序。
但如果你想更进一步,你至少有两个选择:
选项 1 -ls
排序开关
man ls
告诉你一些可以用来排序的开关,具体来说,ls 手册页说:
无(-U)、大小(-S)、时间(-t)、版本(-v)、扩展(-X)
就您而言,您需要“版本”排序 (-v)。 不过要小心,因为这也会对任何有安排的东西进行blahblah-X.Y.Z-A
排序这可能并不完全是你想要的。另请参阅GNU 对版本排序的解释。
选项 2 - 排序命令的管道
您可以使用管道|
将输出发送到另一个命令,例如命令 sort
您可以使用它以多种其他方式进行排序,例如,ls -1 | sort -n
如果您有编号文件,它很有用。该-1
开关确保输出是每个文件一行。
sed
同样,您可以使用或 之类的东西来操纵输出以帮助排序awk
。
有很多方法可以回答这类问题。您可能会发现 Linux Shell 教程很有帮助。
*(看看我做了什么?:-p)
答案3
正如评论中指出的那样,输出是ls
已经排序,但按字符排序,而不是按数字排序。您可能希望通过管道传输输出,sort
其中有一个开关可以按字符串内的数字排序:
ls | sort --version-sort
来自手册页:
-V, --version-sort natural sort of (version) numbers within text
缺点:当我们发出时ls
,它会将文件输出到桌子列数与当前屏幕的列数相同(就像您在帖子中展示的那样)。但是当ls
注意到其输出被重定向到文件或管道(如ls | sort
)时,ls
只需打印文件即可一列,因为它假设输出将由其他程序(如)逐行(即逐个文件)处理sort
。因此的输出ls | sort -V
将在一列中而不是在具有多列的表中。请参阅@vijay很简单,但是完美答案如何避免这种情况。
答案4
请尝试一下。
ls -ltrh --sort=size
示例输出
$ ls -ltrh --sort=size
total 13M
drwxr-xr-x 1 tayyab.sarfraz 1049089 0 Nov 11 14:26 ZZZZZ3309669667/
drwxr-xr-x 1 tayyab.sarfraz 1049089 0 Nov 11 14:26 ZZZZZ1036987434/
-rw-r--r-- 1 tayyab.sarfraz 1049089 504 Jun 10 17:11 desktop.ini
-rw-r--r-- 1 tayyab.sarfraz 1049089 1021 Oct 30 13:02 jZHcYAg3964781410.txt
-rw-r--r-- 1 tayyab.sarfraz 1049089 1021 Oct 30 13:02 jZHcYAg3531170004.txt
-rw-r--r-- 1 tayyab.sarfraz 1049089 2.0K Oct 18 13:06 ZZZZZ596653076.doc
-rw-r--r-- 1 tayyab.sarfraz 1049089 2.0K Oct 18 13:06 ZZZZZ2113390587.doc
-rw-r--r-- 1 tayyab.sarfraz 1049089 4.0K Oct 26 12:35 '!!!!!3048223661.pem'