小编sea*_*bry的帖子

列出目录中每个基本名称的最可靠方法,按修改日期排序?

给定一个包含以下内容的目录:

  • note 1.txt, 昨天最后修改
  • note 2.txt,上次修改前天
  • note 3.txt,今天最后修改

获取数组的最佳方法是什么note 3 note 1 note 2

为了定义“最佳”,我更关心稳健性(在 macOS 中的 ZSH 上下文中),而不是效率和可移植性。

预期的用例是一个包含数百或数千个纯文本文件的目录,但是——冒着混淆问题的风险——这是我有一个更普遍的问题的一个特定案例,在文件路径上执行字符串操作的最佳实践是什么由命令打印喜欢lsfind,和mdfind


我一直在使用一个调用此命令的宏来实现上述目的:

ls -t | sed -e 's/.[^.]*$//'
Run Code Online (Sandbox Code Playgroud)

它从来没有失败过,但是:

  • Greg 的 Wiki强烈建议不要解析ls. (解析ls实践,在“5. 永远不要做这些”下)。
  • sed在参数扩展会做的地方调用效率低下吗?

使用find(用 NUL 字符而不是换行符安全地分隔文件路径)和参数扩展来提取基本名称,这会产生一个未排序的列表:

find . -type f -print0 | while IFS= read -d '' -r l ; do print "${${l%.*}##*/}" ; done
Run Code Online (Sandbox Code Playgroud)

但是按修改日期排序似乎需要调用stat …

zsh parameter string

6
推荐指数
1
解决办法
377
查看次数

标签 统计

parameter ×1

string ×1

zsh ×1