Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在特定日期后创建的子目录中查找文件_Sql_Linux_Bash_Shell_Unix - Fatal编程技术网

Sql 在特定日期后创建的子目录中查找文件

Sql 在特定日期后创建的子目录中查找文件,sql,linux,bash,shell,unix,Sql,Linux,Bash,Shell,Unix,我正在编写一个bash脚本(只是学习它),它需要在特定日期后创建的子目录中查找文件。我有一个文件夹/images/,在不同的子文件夹中有JPEG-我想找到在某个日期之后上传到该目录(或任何子目录)的所有JPEG。我知道-mtime标志,但我的“上次导入”日期是以%Y-%m-%d格式存储的,如果可能的话,最好使用它 此外,每个文件/路径名将用于生成一个MySQL SELECT查询。我知道find通常会逐行输出找到的文件名。但是如果find实际上不是我应该使用的命令,那么最好有一个类似的输出格式来生

我正在编写一个bash脚本(只是学习它),它需要在特定日期后创建的子目录中查找文件。我有一个文件夹
/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作业的一部分)的手册页中,我看不到@jesselveton
date--date='2011-02-01'+%s
提供了自纪元以来的秒数。从纪元开始的今天的秒数中减去它,然后除以每天的秒数(86400)。所以这完全可以在我的Ubuntu机器上使用,但是OSX
date
是不同的-知道如何在两个操作系统上都使用它吗?(或者我应该为这个问题创建一个新的问题?顺便说一句-将此标记为正确答案。Thx)@Jesselveton不知道OSX
date
命令词是如何定义的。你的问题上有一个“linux”标签。不需要被动攻击-@chanchal1987有一个完整的解决方案,更新了公认的答案