环路上的目录,并通过使用shell脚本
问题描述:
问题描述做了一些分析:环路上的目录,并通过使用shell脚本
我有一组文件,并将这些文件名保存在表到数据库称为“File_names” 我想打壳目录脚本循环在目录中,每次搜索数据库中是否存在该文件名,则如果不存在:则将该名称插入数据库中。否则什么都不做。
我的踪迹:
FILES=/path/*
for f in $FILES
do
echo $f
done
但是$ F这里包含了我希望的名字仅做smthing像路径+名称:
count = " select count(*) from File_names where name = $f"
我怎样才能做到这一点?
在此先感谢
答
我没有发现你的问题非常清楚;据我了解,我会回答它的外壳部分。
据我所知,你想在目录中的每个文件上运行一个命令。但是您只对文件的基本名称感兴趣,即没有目录部分。
-
备选1
for f in /path/*; do echo "$(basename "$f")" done
-
备选2
set -e cd /path for f in *; do echo "$f" done
set -e
是这样,如果cd
命令失败脚本将停止。通过set -e
启动shell脚本通常是一个好主意。
如果文件名包含标点符号或间距,请小心引用。这适用于shell部分和SQL部分:您在问题中构建查询的方式完全开放于SQL injection(想想如果有人创建了名为foo; DROP TABLE File_names
的文件,会发生什么情况)。
而数据库是Oracle,SQL服务器......? – 2010-07-12 13:59:44