需求:某文件夹下的所有.jpg文件插入数据库中,只存文件路径和文件名.
一.Linux下操作
1.awk安装
sudo apt-get install -y gawk
2.调用find命令遍历文件夹下所有.jpg文件,把遍历的文件路径写到一个文件里(加 | sort 是为了find的结果自然排序,否则find的结果很乱)
find /home/abc/test/ -name "*.jpg" | sort > /home/abc/find_abc_test.txt
3.awk整理路径文件,拼装成sql语句(awk拼装sql根据个人情况,我这里分隔符时/和.)
awk -F ‘[\/.]‘ ‘{now=systime();nt=strftime("%Y",now)"-"strftime("%m",now)"-"strftime("%d",now)" "strftime("%T");print "INSERT INTO `your_database_name`.`your_table_name` (file_title,file_name,file_path,create_time,update_time) VALUES (\""$8"\",\""$8"."$9"\",\""$6"/"$7"/"$8"."$9"\",\""nt"\",\""nt"\");"}‘ /home/abc/find_abc_test.txt > /home/abc/sql_abc_test.sql
可以先中命令行里试试awk分隔后的各个块是什么,比如
awk -F ‘[\/.]‘ ‘{print $1}‘ /home/abc/find_abc_test.txt
4.mysql导入sql文件,数据库名your_database_name
mysql -uroot -proot your_database_name </home/abc/sql_abc_test.sql
到此,已经把想要的数据插入数据库.
二.Linux+PHP
用PHP操作,用exec()方法,把上面的命令都拼成字符串,注意引号用\.
例:($your_dir_path被遍历文件夹路径,因为浏览器拿不到文件夹真实路径,所以$your_dir_path我是事先存数据库中的)
$your_command_str = ‘find ‘ . $your_dir_path . ‘/ -name "*.jpg" | sort > /home/abc/find_abc_test.txt‘;
exec($your_command_str);
其余命令以此类推,注意操作时涉及到的文件夹给好相应的权限,还有owner问题.
注意把执行时间调无限
ini_set(‘max_execution_time‘,‘0‘);
原文:https://www.cnblogs.com/aumid47/p/11353824.html