1

我想使用 GNUfind命令根据模式查找文件,然后按最近修改文件到最近修改最少的顺序显示它们。

我明白这一点:

find / -type f -name '*.md'

但是然后将添加什么来对文件从最近修改到最少进行排序?


4

3 回答 3

2

find无法对文件进行排序,因此您可以改为输出修改时间加上文件名,按修改时间排序,然后再次删除修改时间:

find . -type f -name '*.md' -printf '%T@ %p\0' |   # Print time+name
  sort -rnz |                                      # Sort numerically, descending
  cut -z -d ' ' -f 2- |                            # Remove time
  tr '\0' '\n'                                     # Optional: make human readable

这使用\0- 分隔的条目来避免任何类型的文件名出现问题。您可以将它直接安全地传递给许多工具,但在这里它改为管道以tr将文件列表显示为单独的行。

于 2020-12-11T21:37:21.390 回答
1
find <dir> -name "*.mz" -printf "%Ts - %h/%f\n" | sort -rn

以纪元格式 (%Ts) 以及目录 (%h) 和文件名 (%f) 打印修改时间。通过管道将其通过 sort -rn 以相反的数字顺序排序。

于 2020-12-11T21:39:21.273 回答
0

通过管道输出findtoxargsls

find / -type f -name '*.md' | xargs ls -1t
于 2020-12-11T21:32:17.117 回答