我确信这是一个老问题,答案也很简单,但我尝试了所有我知道的组合,却一无所获。而且在 Google 上搜索并不愉快,因为搜索这个主题会找到数百种“使用 date 命令查找昨天的日期”的方法。
无论如何,我正在尝试使用 find 来选择昨天修改的文件列表。目标是从目录中选择昨天的日志文件以对它们执行特定操作。该目录包含多天的日志输出。
我能得到的最好的结果就是找到昨天的文件,同时列出今天的文件。我不想看到今天的文件——只想看到昨天的文件。
我还会加入明白了:这是 AIX 发现的,不是大多数 Linux 发行版中都有 GNU 功能。所以-daystart
对我来说不是一个可用的选项。(已经想到了这一点!)
有人知道在 AIX 上使用 find 列出昨天的文件的有效方法吗?
答案1
一种可能性:在你的机器上构建 GNU‘find’并使用它来代替库存的‘find’。
或者,如果 AIX find 有 -newer 测试,您可以执行以下操作:
# midnight oct 7
touch -t 10070000 today.ref
# midnight oct 6
touch -t 10060000 yesterday.ref
find /dir -newer yesterday.ref -a \! -newer today.ref -print
rm today.ref yesterday.ref
答案2
您可以扣除当前时间自午夜以来的分钟数并使用-mmin
:
min=$(date +%M); currtime=$(($(date +%k)*60 + ${min#0*} )); find /some/dir -mmin -$((currtime + (24 * 60))) -a -mmin +$((${currtime} + 1))
您可能需要对偏移量进行一些调整。我没有很多文件可以及时进行大量边缘情况测试。
答案3
根据您需要对它们执行的操作,简单的 ls + grep 解决方案怎么样?
ls -al LOGDIRECTORY | grep 'YOUR DATE'
答案4
不管find . -mtime 1
用吗?
如果您需要它是昨天并且不能在接近午夜时运行它,我想您可以使用两个 -mmin 选项来指定时间段来解决问题。
如果是凌晨 1 点,你可以这样做find . -mmin +60 -mmin -1500