首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何递归地查找和列出带有子目录和时间的目录中最新修改的文件

问如何递归地查找和列出带有子目录和时间的目录中最新修改的文件
EN

Stack Overflow用户
提问于 2011-04-06 12:26:17
回答 22查看 513.6K关注 0票数 531
  • 操作系统: Linux
  • 文件系统类型:ext3
  • 首选解决方案: Bash (脚本/一行)、Ruby或Python

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

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

代码语言:javascript
复制
./alfa/beta/gamma/example.txt

而且我修改了文件example.txt的内容,我需要时间以人类可读的形式显示在第一级目录alfa旁边,而不是时代。我尝试过使用find、xargs、sort等工具,但是当我创建/修改几个级别的文件时,文件系统时间戳'alfa‘并没有改变这个问题。

EN

回答 22

Stack Overflow用户

发布于 2011-09-16 18:21:51

试试这个:

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

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

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

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

更快一点。

票数 596
EN

Stack Overflow用户

发布于 2013-10-23 10:43:52

若要查找文件状态上次更改的所有文件( N ),请执行以下操作:

代码语言:javascript
复制
find -cmin -N

例如:

代码语言:javascript
复制
find -cmin -5

连续几天使用-ctime而不是-cmin:

代码语言:javascript
复制
find -ctime -3

在FreeBSD和MacOS上:您也可以使用-ctime n[smhdw]进行秒、分钟、小时、天和周。如果没有提供任何单元,则默认为天数。

示例:

代码语言:javascript
复制
# FreeBSD and MacOS only:
find . -ctime -30s
find . -ctime -15
find . -ctime -52w
票数 269
EN

Stack Overflow用户

发布于 2013-07-10 21:04:22

GNU (参见man find)有一个-printf参数,用于显示Epoch和相对路径名中的文件。

代码语言:javascript
复制
redhat> find . -type f -printf '%T@ %P\n' | sort -n | awk '{print $2}'
票数 52
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5566310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档