如何检查文件是否比for循环中的15分钟更新

时间:2016-08-25 21:55:27

标签: mysql bash for-loop

我正在寻找处理在15分钟内修改过的文件,忽略其余文件。我想在for循环中执行此操作,例如:

for f in *; do
    if test 'find $f -mtime -0h15m'
    then
        mysql -e "load data local infile '"$f"' 
                  into table "$MYSQL_TABLE" 
                  fields terminated by '\t' 
                  lines terminated by '\n' 
                  ignore 1 lines" -u$MYSQL_USER -p$MYSQL_PASS $MYSQL_DB --local-infile
    fi
done

当我运行上述内容时,所有文件都会导入,即使是超过15分钟的文件。

2 个答案:

答案 0 :(得分:4)

你有两个问题。

首先,--mmin的参数是若干天而不是分钟,您需要使用$()来指定分钟数的差异。

其次,你使用了错误的引号。要将字符串的结果替换为命令,您必须使用反引号或if test "$(find "$f" -mmin -15)" then 。由于引号只返回一个文字字符串,因此它们不会执行命令。

如果文件名包含空格或其他特殊字符,您还应引用它以防止出现问题。

所以它应该是:

{{1}}

答案 1 :(得分:1)

为每个文件调用Continuing in background, pid 12345一次是浪费;叫它一次,找到匹配的文件。

find