我正在编写一个bash脚本(只是学习它),需要在特定日期之后创建的子目录中查找文件。我有一个文件夹/images/
,其中包含各种子文件夹中的jpeg - 我希望在特定日期之后找到上传到该目录(或任何子目录)的所有jpeg。我知道-mtime
标志,但我的“最后导入”日期以%Y-%m-%d
格式存储,如果可能的话,最好使用它?
此外,每个文件/路径名将用于生成MySQL SELECT查询。我知道find通常会逐行输出找到的文件名。但是如果find
实际上不是我应该使用的命令,那么我可以使用类似的输出格式来生成SELECT查询(WHERE image.file_name IN (...)
)
答案 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