我有几个目录,其中有几个子目录和文件。我需要列出所有这些目录的列表,这些目录的构造方式使每个第一级目录都列在其中最新创建/修改的文件的日期和时间旁边。
为了澄清,如果我触摸一个文件或修改它的内容在几个子目录级别下,时间戳应该显示在第一级目录名称旁边。假设我有一个像这样构造的目录:
./alfa/beta/gamma/example.txt而且我修改了文件example.txt的内容,我需要时间以人类可读的形式显示在第一级目录alfa旁边,而不是时代。我尝试过使用find、xargs、sort等工具,但是当我创建/修改几个级别的文件时,文件系统时间戳'alfa‘并没有改变这个问题。
发布于 2011-09-16 18:21:51
试试这个:
#!/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更快一点。
发布于 2013-10-23 10:43:52
若要查找文件状态上次更改的所有文件( N ),请执行以下操作:
find -cmin -N例如:
find -cmin -5连续几天使用-ctime而不是-cmin:
find -ctime -3在FreeBSD和MacOS上:您也可以使用-ctime n[smhdw]进行秒、分钟、小时、天和周。如果没有提供任何单元,则默认为天数。
示例:
# FreeBSD and MacOS only:
find . -ctime -30s
find . -ctime -15
find . -ctime -52w发布于 2013-07-10 21:04:22
GNU (参见man find)有一个-printf参数,用于显示Epoch和相对路径名中的文件。
redhat> find . -type f -printf '%T@ %P\n' | sort -n | awk '{print $2}'https://stackoverflow.com/questions/5566310
复制相似问题