如何使用Shell脚本从一个目录读取文件并提供文件作为另一存储过程的输入?

时间:2018-12-27 09:18:59

标签: linux bash shell

我是编写Shell脚本的新手,并且我有一个名为XML_Files的目录,其中包含xml文件列表

01.xml

02.xml

03.xml

04.xml

我想一一读取所有xml文件,并将这些文件作为输入参数发送到我的存储过程。这样存储过程将相应地一个接一个地处理每个xml文件。

我试图使用for循环来实现这一点,但是我无法获得预期的结果。它只采用了文件目录路径。有人可以帮我在以下脚本中错过的内容吗?

XML_FILES='ls -l $Xml_Files/*.xml'
for f in XML_FILES
do
<<Stored procedure>> $f
if [ $? = 0 ] 
then 
  mv $f $XML_Proccesed_Dir/
else
    mv $f $XML_error_Dir/
fi
done

我正在寻找可以从/ xml_files目录中选择文件并将文件作为输入参数发送到存储过程以处理xml文件的工具。

2 个答案:

答案 0 :(得分:2)

您可以只使用bash中的通配符扩展来获取文件夹内xml文件的列表。

md_mapid

for f in ${Xml_Files}/*.xml; do something ${f} .... done 在此循环中的格式为:

${f}

如果您需要$ {f}为其他格式,则应进一步说明问题。

答案 1 :(得分:1)

您还可以使用find对找到的每个文件执行给定命令。示例:

find ${Xml_Files} -name '*.xml' -type f -exec something {} \;

这将在目录{{1}中搜索扩展名为xml(-type f)的每个文件(-name '*.xml'),并在找到的每个${Xml_Files}上执行something x。 / p>

您还可以使用x执行简短的bash脚本,例如:

find