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


23

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

例如,在我的eBooks文件夹(在Windows中)如下所示:

_read
      Book1.pdf
      Book2.pdf
_reading
      Book3.pdf
Book4.pdf
Book5.pdf

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

Book4.pdf
Book5.pdf    
_read
      Book1.pdf
      Book2.pdf
_reading
      Book3.pdf

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

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

谢谢。


您可以包含屏幕截图吗?
philshem 2013年

尽管我认为@maggotbrain的答案比那里的答案要好,但可能会复制askubuntu.com/questions/115741/…
rudivonstaden

Answers:


16

由于您尚未指定当前使用的语言环境,因此该解决方案假定您使用的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=

影响文件排序顺序的变量称为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再次运行该命令应反映此更改。


1
正如问题最后一段所述,我已经将LC_COLLATE设置为C。尽管如此,在终端机和nautilus Explorer中我都得到了不同的结果,同时我重新启动了计算机。知道为什么会这样吗?
nunos 2013年

@nunos您是否为ls您设置了别名.bashrc
凯文·鲍文

@nunos有趣。您正在检查哪种文件系统类型?我唯一ls -l遇到排序问题的地方是ntfs格式化的驱动器,该驱动器似乎不支持LC_COLLATE变量。我的所有ext3文件系统似乎都使用ls命令以及在Thunar和Nautilus中都遵守该设置。
凯文·鲍文

那很可能就是问题所在。我ls -l在NTFS驱动器上使用该命令,因为我具有Windows双重启动功能。
nunos 2013年

2
update-locale LC_COLLATE=C如果您在文件夹名称的开头使用大写字母,则无助于将带下划线的文件夹放在排序列表的顶部!
malisokan 2014年

1

caja(我认为Nautilus之前是这样)在“首选项”中具有一个选项,可以在文件之前对文件夹进行排序。有帮助吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.