我有几个文件,并按ls
如下方式对它们进行排序:
a
_b
c
但我想
_b
a
c
我怎样才能做到这一点?
答案1
作为一次性命令,您可以执行以下操作:
LC_COLLATE=C ls
或者您可以将其添加export LC_COLLATE="C"
到您的 .bashrc 以使其永久生效(在其他地方排序可能会产生意外结果)。
更多信息Ubuntu 论坛。
答案2
如果没有内置方法可以执行此操作,您可以使用简单的替代方案sort
:
#!/usr/bin/env python
import sys
for i in sorted(sys.stdin):
sys.stdout.write(i)
例如,将其保存在/bin/pysort
并使其可执行(sudo cp whatever.py /bin/pysort
和sudo chmod a+x /bin/pysort
),然后按如下方式运行它ls | pysort
:
stefano@lenovo:~/t$ ls | pysort
_b
a
c
答案3
不能ls | sort
完全满足您的需要吗?
答案4
截至 2024 年,该LC_COLLATE=C ls
选项在装有 sort (GNU coreutils) 8.32 和 的 Ubuntu 22.04 上对我来说运行良好LANG=en_GB.UTF-8
。但是,如果该选项在您的平台/语言环境中不起作用,您可以使用 perl 轻松完成此操作:
ls | perl -e '@f=sort <>; print @f'
我还很惊讶在手册页中找不到相关选项sort
。