如何以逆时间顺序列出目录下的所有叶子文件?

如何以逆时间顺序列出目录下的所有叶子文件?

给定一个目录,我们如何以时间倒序列出其所有叶文件?ls -Rltr是按时间倒序排列子目录的内容,但按子目录对文件进行分组,这打破了按时间倒序列出所有叶文件(无论其父目录)的要求。谢谢。

答案1

zsh

printf '%s\n' **/*(D^om/:t)

zsh这些是全局限定符,这是目前独有的功能。

  • D: 包含点文件
  • ^: 反转以下限定符
  • om:修改时间顺序(与 相反^
  • /:排除(使用^)类型的文件目录
  • :t: 一个修饰符,可以得到尾巴文件的名称(基本名称)。

(如果您想要完整路径而不仅仅是基本名称,只需删除:t)。

bash或任何外壳,提供zsh可用:

zsh -c 'printf "%s\n" **/*(D^om/:t)'

或者在 GNU 系统上:

find . ! -type d -printf '%T@\t%f\0' | sort -zn |
  tr '\n\0' '\0\n' | cut -f2- | tr '\0' '\n'

(如果您想要完整路径而不仅仅是基本名称,只需替换%f%P%p(与此处相同./%P))。

相关内容