如何首先列出带下划线的文件夹?

nun*_*nos 26 files locale

所以几乎每个人,在使用 Ubuntu 之前,我使用的是 Windows 机器,我在 Windows 中习惯的一件事是使用下划线作为文件夹名称的第一个字符作为某种特殊标记,以便它在命令行和文件资源管理器中首先出现在列表中。

例如,在我的 eBooks 文件夹(在 Windows 中)看起来像这样:

_read
      Book1.pdf
      Book2.pdf
_reading
      Book3.pdf
Book4.pdf
Book5.pdf
Run Code Online (Sandbox Code Playgroud)

但在 Ubuntu 的 Nautilus 中,它看起来像这样:

Book4.pdf
Book5.pdf    
_read
      Book1.pdf
      Book2.pdf
_reading
      Book3.pdf
Run Code Online (Sandbox Code Playgroud)

发生的事情是它完全忽略了下划线,并将“_read”视为“read”,因此没有按照需要首先将其列出。

我尝试将环境变量 LC_COLLATE 设置为 C。这在某种程度上有所帮助,因为它将下划线列出在一起,但在最后,而不是在开头。

谢谢。

Kev*_*wen 20

由于您尚未指定当前使用的语言环境,因此此解决方案假定您使用的en_US.UTF-8是默认语言环境。

您可以通过运行以下命令检查此locale命令行(Ctrl+ Alt+ t)。

例如:

~ $ locale
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Run Code Online (Sandbox Code Playgroud)

影响文件排序顺序的变量称为LC_COLLATE

根据Ubuntu 帮助页面,LC_COLLATE 变量确定“字符串(文件名...)如何按字母顺序排序。在此处使用“C”或“POSIX”语言环境会导致类似 strcmp() 的排序顺序,这可能是优于特定语言的语言环境。”

排序顺序需要从 更改LC_COLLATE="en_US.UTF-8"LC_COLLATE=C

在命令行(Ctrl+ Alt+ t),输入:

update-locale LC_COLLATE=C

重要提示:您需要退出系统,然后重新登录才能使更改生效

locale再次运行该命令,它应该显示LC_COLLATE变量已成功更改。ls -l再次运行该命令应反映此更改。

  • 如果在文件夹名称的开头使用**大写字母**,`update-locale LC_COLLATE=C` 无法帮助在排序列表的顶部获取带有下划线的文件夹! (3认同)
  • 我已经将 LC_COLLATE 设置为 C,正如我在问题的最后一段中所述。尽管如此,我在终端和 nautilus 资源管理器中都得到了不同的结果,同时我重新启动了计算机。知道为什么会这样吗? (2认同)