Sql 在特定日期后创建的子目录中查找文件
我正在编写一个bash脚本(只是学习它),它需要在特定日期后创建的子目录中查找文件。我有一个文件夹Sql 在特定日期后创建的子目录中查找文件,sql,linux,bash,shell,unix,Sql,Linux,Bash,Shell,Unix,我正在编写一个bash脚本(只是学习它),它需要在特定日期后创建的子目录中查找文件。我有一个文件夹/images/,在不同的子文件夹中有JPEG-我想找到在某个日期之后上传到该目录(或任何子目录)的所有JPEG。我知道-mtime标志,但我的“上次导入”日期是以%Y-%m-%d格式存储的,如果可能的话,最好使用它 此外,每个文件/路径名将用于生成一个MySQL SELECT查询。我知道find通常会逐行输出找到的文件名。但是如果find实际上不是我应该使用的命令,那么最好有一个类似的输出格式来生
/images/
,在不同的子文件夹中有JPEG-我想找到在某个日期之后上传到该目录(或任何子目录)的所有JPEG。我知道-mtime
标志,但我的“上次导入”日期是以%Y-%m-%d
格式存储的,如果可能的话,最好使用它
此外,每个文件/路径名将用于生成一个MySQL SELECT查询。我知道find通常会逐行输出找到的文件名。但是如果
find
实际上不是我应该使用的命令,那么最好有一个类似的输出格式来生成SELECT查询(WHERE image.file\u name IN(…)
)您可以将日期转换为find-mtime
所期望的“last X days”格式
find
是此任务的正确命令。将其输出发送到某处,然后将文件解析到查询中
如果文件是由用户上传的,请小心SQL注入攻击。注意特殊字符引用,即使它们不是。请尝试以下脚本:
DATE=<<date>>
SEARCH_PATH=/images/
DATE=`echo $DATE|sed 's/-//g'`
DATE=$DATE"0000"
FILE=~/timecheck_${RANDOM}_$(date +"%Y%m%d%H%M")
touch -t $DATE $FILE
find $SEARCH_PATH -newer $FILE 2>/dev/null|awk 'BEGIN{f=0}{if(f==1)printf("\"%s\", ",l);l=$0;f=1}END{printf("\"%s\"",l)}'
rm -f $FILE
日期=
搜索路径=/images/
日期=`echo$DATE | sed's/-//g'`
日期=$DATE“0000”
文件=~/timecheck{RANDOM}{$(日期+%Y%m%d%H%m”)
touch-t$日期$文件
查找$SEARCH\u PATH-更新的$FILE 2>/dev/null | awk'开始{f=0}{if(f==1)printf(\%s\,“,l);l=$0;f=1}结束{printf(\%s\”,l)}
rm-f$文件
…如何将%Y-%-m-%d
转换为-mtime
格式?在date
(这是cron作业的一部分)的手册页中,我看不到@jesselvetondate--date='2011-02-01'+%s
提供了自纪元以来的秒数。从纪元开始的今天的秒数中减去它,然后除以每天的秒数(86400)。所以这完全可以在我的Ubuntu机器上使用,但是OSXdate
是不同的-知道如何在两个操作系统上都使用它吗?(或者我应该为这个问题创建一个新的问题?顺便说一句-将此标记为正确答案。Thx)@Jesselveton不知道OSXdate
命令词是如何定义的。你的问题上有一个“linux”标签。不需要被动攻击-@chanchal1987有一个完整的解决方案,更新了公认的答案