【发布时间】:2021-07-08 04:08:07
【问题描述】:
很多时候,我发现自己认为最好有一个尽可能便携的通用解决方案,“如果我需要在奇怪或受限的机器上使用它”。
我一直在寻找一种方法,以仅使用 POSIX sh 和工具,或多或少地以相反的顺序有效地对目录中的文件列表进行排序。
这应该适用于任意命名的文件,包括名称中包含控制代码字符(例如换行符)的文件。
【问题讨论】:
-
为了清楚起见,您只想根据
LC_COLLATE中设置的规则对文件名进行排序(默认按字典顺序)(ls -r)?或者你想对文件的内容进行排序(sort -r)?你想用它们做什么? -
最初,按字典顺序对文件名进行排序,就像
ls -r一样,如果不按时间排序,是的。但是,如果您不想区分文件名(请参阅任意名称),则无法解析ls输出。文件的内容无关紧要。最终,我需要迭代这个排序列表并将每个元素单独传递给一个对它有用的函数。我的实际脚本以复杂的方式生成 grub 配置/引导条目 - 最新的优先。但如何处理排序数据最终取决于用户。 :) -
另外,请注意,这个问题更像是问答式的。我的实际意图是分享这一点,因为尚未在 SO 上公开发布任何实现。希望对其他人有所帮助。
-
通常在 POSIX 环境中,您可以安装 ruby/perl/python/C 编译器并在那里完成工作。
标签: sorting sh posix quicksort