给定一个目录,我们如何以时间倒序列出其所有叶文件?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
))。