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

时间:2012-02-01 04:42:06

标签: sql linux bash shell unix

我正在编写一个bash脚本(只是学习它),需要在特定日期之后创建的子目录中查找文件。我有一个文件夹/images/,其中包含各种子文件夹中的jpeg - 我希望在特定日期之后找到上传到该目录(或任何子目录)的所有jpeg。我知道-mtime标志,但我的“最后导入”日期以%Y-%m-%d格式存储,如果可能的话,最好使用它?

此外,每个文件/路径名将用于生成MySQL SELECT查询。我知道find通常会逐行输出找到的文件名。但是如果find实际上不是我应该使用的命令,那么我可以使用类似的输出格式来生成SELECT查询(WHERE image.file_name IN (...)

2 个答案:

答案 0 :(得分:1)

您可以将日期转换为find -mtime期望的“最后X天”格式。

find是执行此任务的正确命令。将输出发送到某处,然后将文件解析为查询。

如果文件是由用户上传的,请注意SQL注入攻击。即使它们不是,也要注意特殊字符引用。

答案 1 :(得分:1)

尝试以下脚本:

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