操作系统: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/