ll
返回这个结果:
51380224 Aug 3 08:23 tig_10.d1
51380224 Aug 3 08:18 tig_10.d10
51380224 Aug 3 08:20 tig_10.d11
51380224 Aug 3 08:23 tig_10.d12
51380224 Aug 3 08:21 tig_10.d13
51380224 Jul 31 12:06 tig_10.d14
131072 Jul 31 12:06 tig_10.d15
51380224 Aug 3 08:15 tig_10.d2
51380224 Aug 2 23:08 tig_10.d3
51380224 Aug 2 14:24 tig_10.d4
51380224 Aug 2 14:24 tig_10.d5
51380224 Aug 3 08:21 tig_10.d6
51380224 Aug 3 08:22 tig_10.d7
51380224 Aug 3 08:13 tig_10.d8
51380224 Aug 3 08:20 tig_10.d9
像这样列出文件失败
51380224 Aug 3 08:23 tig_10.d1
51380224 Aug 3 08:15 tig_10.d2
51380224 Aug 2 23:08 tig_10.d3
51380224 Aug 2 14:24 tig_10.d4
51380224 Aug 2 14:24 tig_10.d5
51380224 Aug 3 08:21 tig_10.d6
51380224 Aug 3 08:22 tig_10.d7
51380224 Aug 3 08:13 tig_10.d8
51380224 Aug 3 08:20 tig_10.d9
51380224 Aug 3 08:18 tig_10.d10
51380224 Aug 3 08:20 tig_10.d11
51380224 Aug 3 08:23 tig_10.d12
51380224 Aug 3 08:21 tig_10.d13
51380224 Jul 31 12:06 tig_10.d14
131072 Jul 31 12:06 tig_10.d15
有什么想法吗?
答案1
ls
将重新排序您给它的文件名(或当前目录,如果您不这样做);解决这个问题的一种方法是单独给出文件名:
ls -l *.d? ; ls -l *.d??
或者,因为您似乎有一个别名/函数来执行长列表:
ll *.d?; ll *.d??
答案2
我不知道你的ll
是什么。ll
是 的常用别名ls -l
,但看起来并不像它。
在任何情况下,特定的输出都可以按照您想要的 GNUsort
及其版本排序应用于第 5 列及以上:
ll | sort -bVk5
如果 ll
是某种别名,ls
并且你ls
是 GNU ls
,那么它ls
也有一个版本启用排序-v
。
使用shell,您可以使用选项或glob 限定符zsh
以类似的方式对其 glob 进行排序。因此,如果您的命令可以获取文件名列表作为参数并且本身不进行任何进一步的排序,您可以执行以下操作(仅在 中):numericglobsort
(n)
ll
zsh
zsh
ll *(n)
答案3
使用sort
:
$ ls -lghFG | sort -n -td -k2
total 0
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d1
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d2
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d3
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d4
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d5
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d6
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d7
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d8
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d9
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d10
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d11
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d12
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d13
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d14
-rw-r--r-- 1 0 Aug 3 09:43 tig_10.d15
这将使用该字母d
作为分隔符,并在字段 2 上对输出进行数字排序,因此如果您的文件名包含该字母,则可能会出现问题d
。
为了满足您使用ll
(这是别名)的要求,您可以这样做(不推荐:
alias ll='ls -lghFG | sort -n -td -k2'
答案4
从man
,
ll -v
- -v 文本中(版本)数字的自然排序