如何在包含子目录和时间的目录中递归查找并列出最新修改的文件

  • 操作系统:Linux

  • 文件系统类型:ext3

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

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

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

/alfa/beta/gamma/example.txt

我修改了文件example.txt的内容,我需要在第一级目录alfa旁边以人类可读的形式显示时间,而不是epoch。我尝试过使用find、xargssort等工具,但我无法回避这样一个问题,即当我创建/修改几级文件时,“alfa”的文件系统时间戳不会改变

试试这个:

#/bin/bash
查找$1-type f-exec stat--格式'%Y:%Y%n'{}\\分拣-编号|切割-d:-f2-|头

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

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

#/bin/bash
查找$1-类型f-print0 | xargs-0 stat-格式“%Y:%Y%n”|排序-nr |剪切-d:-f2-|头

这要快一点

发表评论