根据上次修改日期递归地对目录中的文件进行排序

Dan*_*nny 11 shell scripting find sort

根据上次修改日期递归地对目录中的文件进行排序

我修改了目录中的很多文件,想通过按上次修改日期对它们进行排序来了解这些文件是什么,并且我希望排除某些扩展名

在 svn 目录中,我也有很多 .svn 文件,我不想在排序中显示

n.s*_*.st 19

find -printf "%TY-%Tm-%Td %TT %p\n" | sort -n
Run Code Online (Sandbox Code Playgroud)

会给你类似的东西

2014-03-31 04:10:54.8596422640 ./foo
2014-04-01 01:02:11.9635521720 ./bar


And*_*ese 6

如果您想扁平化目录结构(从而按日期对所有目录中的所有文件进行排序,忽略文件所在的目录),find@yeti 建议的 -approach 是可行的方法。如果你想保留目录结构,你可以试试

$ ls -ltR /path/to/directory
Run Code Online (Sandbox Code Playgroud)

基于目录排序。


UnX*_*UnX 6

这将列出所有files 内容<dir>,最上面的是最旧的修改

find <dir> -type f -print0 | xargs -0 ls -ltr
Run Code Online (Sandbox Code Playgroud)

最新的修改是最上面的

find <dir> -type f -print0 | xargs -0 ls -lt
Run Code Online (Sandbox Code Playgroud)

请注意,只有当文件名列表不超过系统上的总命令行长度限制时,这才有效。


Gil*_*il' 5

在 bash 中,shopt -s globstar先运行。在 ksh93 中,set -o globstar先运行。在 zsh 中,您已经设置好了。

ls -dltr **/*
Run Code Online (Sandbox Code Playgroud)

如果您的文件太多以至于超出了系统上的命令行长度限制,这将返回一个错误。在 zsh 中,您可以改用它:

print -rl -- **/*(Om)
Run Code Online (Sandbox Code Playgroud)