linux - 获取按时间排序的文件名

标签 linux bash awk find

如何获取文件名按修改时间戳降序排列?

我应该补充一点,文件名可能包含除 \0 之外的任何特殊字符。

这是我到目前为止得到的。获取文件名及其 mtime 的循环,但它是未排序的:

while IFS= read -r -d '' fname; do
  read -r -d '' mtime
done < <(find . -maxdepth 3 -printf '%p\0%T@\0')

最佳答案

如果你重新排序你的 find printf,它就变得很容易排序:

find . -maxdepth 3 -printf '%T@ :: %p\0'|\
sort -zrn |\
sed -z 's/^[0-9.]* :: //' |\
xargs -0 -n1 echo

sedxargs 行只是剥离 mtime 然后对文件名做一些事情的例子。

关于linux - 获取按时间排序的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54617712/

相关文章:

c - 输出将如何打印?

bash - 并行调用多个 bash 函数

bash - 如何使用 awk 解析多行而不产生奇怪的重复

awk脚本来解析ps命令的输出

c - 如何在基于 Debian 的发行版中找到某个文件所属的包?

python - 如何在不杀死 python 脚本的情况下停止它?

尝试使用 ftp 查看文件时 PHP fopen 不工作

linux - 如何将 linux 命令的输出拆分并写入特定大小的多个文件?

regex - 使用 awk/sed 从一行中提取数字

linux - 分号在 awk Action 中代表什么?