Linux/Perl 返回超过 x 分钟未修改的文件夹列表

标签 linux perl sed find

我有一个包含多个文件夹的目录。我想获取最近 60 分钟内未修改的文件夹名称的列表。 这些文件夹将包含多个文件,这些文件将保持旧状态,因此我无法使用 -mmin +60

虽然我在想我可以用 inverse 做点什么。获取在 60 分钟 -mmin -60 内被修改的文件列表,然后输出该列表的倒数。

不确定是否要这样做,或者是否有更简单的方法?

最终我会在 perl 脚本中获取这些文件夹列表,并将它们添加到列表或其他内容中。

这就是我到目前为止获得的文件夹列表

find /path/to/file -mmin -60 | sed 's/\/path\/to\/file\///' | cut -d "/" -f1 | uniq

上面只会给我已更新的文件夹的名称。

最佳答案

有一个巧妙的技巧可以使用 sort 和 uniq 对文本行进行集合操作。您已经拥有已更新的路径。假设它们在一个名为 upd 的文件中。一个简单的 find -type d 可以为您提供所有文件夹。让我们假设将它们全部放入文件中。然后运行

cat all upd | sort |uniq -c |grep '^1'

出现在两个文件中的所有路径都将有 2 个前缀。所有只出现在 file all 中的路径都将以 1 为前缀。以 1 为前缀的行表示 all 和 upd 之间的设置差异,即未触及的路径。 (我认为你可以自己删除前缀 1。)

当然这可以用 perl 或任何其他脚本语言来完成,但是这个简单的 sort|uniq 太好了。-)

关于Linux/Perl 返回超过 x 分钟未修改的文件夹列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19824520/

相关文章:

linux - `managed` 类型在我的 wlan 信息中是什么意思?

perl - 得到响应时 IO::Socket 超时

linux - 用于替换文件中所有出现的占位符的 bash 脚本

linux - 在两个模式之间添加字符串 - sed

bash - 使用 zcat 和 sed 或 awk 编辑压缩的 .gz 文本文件

linux - 在 Redhat Linux 2.6.32 上使用带有 HTTP/2 的 Tomcat 的损坏页面

与 sigdelset() 函数的混淆

c++ - Linux,需要精确的程序时序。调度唤醒程序

perl - 等于 5 的四舍五入 float

perl - 返回数组元素的总和perl