linux - 如何递归查找并列出具有子目录和时间的目录中的最新修改文件

  • 操作系统:Linux

  • 文件系统类型:ext3

  • 首选解决方案:Bash(脚本/单行)、Ruby 或 Python

我有几个目录,其中有几个子目录和文件。我需要列出所有这些目录,这些目录的构建方式使得每个一级目录都列在其中最新创建/修改的文件的日期和时间旁边。

为了澄清,如果我触摸文件或修改其内容向下几个子目录级别,则该时间戳应显示在第一级目录名称旁边。假设我有一个结构如下的目录:

./alfa/beta/gamma/example.txt

我修改了文件example.txt的内容,我需要将那个时间以人类可读的形式显示在一级目录alfa旁边,而不是epoch。我用 find 尝试了一些东西,xargs , sort等等,但我无法解决“alfa”的文件系统时间戳在我创建/修改文件几个级别时不会改变的问题。

最佳答案

试试这个:

#!/bin/bash
find $1 -type f -exec stat --format '%Y :%y %n' "{}" \; | sort -nr | cut -d: -f2- | head

使用它应该开始递归扫描的目录的路径执行它(它支持带空格的文件名)。

如果有很多文件,它可能需要一段时间才能返回任何内容。如果我们改用 xargs 可以提高性能:

#!/bin/bash
find $1 -type f -print0 | xargs -0 stat --format '%Y :%y %n' | sort -nr | cut -d: -f2- | head

这有点快。

https://stackoverflow.com/questions/5566310/

相关文章:

linux - 如何修复 'sudo: no tty present and no askpass

linux - Bash 忽略特定命令的错误

linux - 如何使用 'cp' 命令排除特定目录?

linux - 如何在linux命令行中替换多个文件中的字符串

python - 在 Python 中,如果我在 "with" block 内返回,文件还会关闭吗?

python - 如何逐行读取大型文本文件,而不将它们加载到内存中?

linux - ./配置 :/bin/sh^M : bad interpreter

python - 异常后如何重试?

python - 从 Numpy 数组 : How do I specify the index c

python - 为什么 Python 没有符号函数?