我有一个包含多个文件夹的目录。我想获取最近 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/