循环目录并使用shell脚本进行一些分析

时间:2010-07-12 09:08:59

标签: shell

问题描述:

我有一个包含一组文件的目录,这些文件名保存在表中,称为“File_names” 我想制作在目录上循环的shell脚本,每次搜索数据库中是否存在该文件名,如果没有,则将该名称插入数据库。否则什么都不做。

我的踪迹:

FILES=/path/*
for f in  $FILES
do
 echo $f
done

但是这里的$ f包含路径+名称,我希望这个名称只能像:

count = " select count(*) from File_names where name = $f"

我该怎么做?

先谢谢

1 个答案:

答案 0 :(得分:2)

我发现你的问题不是很清楚;据我所知,我会回答它的shell部分。

据我了解,您希望对目录中的每个文件运行命令。但是你只对文件的基本名称感兴趣,即没有目录部分。

  • 备选方案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的文件会发生什么)。