我正在寻找处理在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分钟的文件。
答案 0 :(得分:4)
你有两个问题。
首先,--mmin
的参数是若干天而不是分钟,您需要使用$()
来指定分钟数的差异。
其次,你使用了错误的引号。要将字符串的结果替换为命令,您必须使用反引号或if test "$(find "$f" -mmin -15)"
then
。由于引号只返回一个文字字符串,因此它们不会执行命令。
如果文件名包含空格或其他特殊字符,您还应引用它以防止出现问题。
所以它应该是:
{{1}}
答案 1 :(得分:1)
为每个文件调用Continuing in background, pid 12345
一次是浪费;叫它一次,找到匹配的文件。
find