对以下划线开头的文件和文件夹进行排序

fme*_*ier 7 xubuntu command-line locale ls

我在文件和文件夹名称的开头使用下划线将它们标记为“特殊”。但这种排序对于 Linux 下的大多数程序都不起作用。我尝试了LC_COLLATE=C ls其他语言环境,但结果很奇怪。假设我有这些文件夹:

2
A
_F
G
K
S
x4
Run Code Online (Sandbox Code Playgroud)

这是 的排序顺序ls。当我使用时LC_COLLATE=C ls,我有这个:

2
A
G
K
S
_F
x4
Run Code Online (Sandbox Code Playgroud)

我在 Xubuntu 18.04 下使用 2 台机器上的 xfce-terminal-emulator 进行此操作。

这里有什么问题吗?

Zan*_*nna 3

--sort=version您可以使用或-v相当于(自然版本排序)对以下划线开头的文件进行排序sort -V(这对于使用数字对文件进行排序最有用)。

\n\n
$ ls -v1\n2\nA\nG\nK\nS\nx4\n_F\n
Run Code Online (Sandbox Code Playgroud)\n\n

有关版本排序的详细信息在info ls...请注意:

\n\n
\xe2\x80\x98LC_COLLATE\xe2\x80\x99 is ignored, which means \xe2\x80\x98ls -v\xe2\x80\x99 and \xe2\x80\x98sort -V\xe2\x80\x99 will\n sort non-numeric prefixes as if the \xe2\x80\x98LC_COLLATE\xe2\x80\x99 locale category\n was set to \xe2\x80\x98C\xe2\x80\x99.\n
Run Code Online (Sandbox Code Playgroud)\n\n

也许这足以满足您的目的。

\n


DK *_*ose 1

@Zanna 的答案提供了一种解决方案。另一个解决方案是这样的:

$ ls -lfr -1 _* [!_]*
_F
2
A
G
K
S
x4
Run Code Online (Sandbox Code Playgroud)