问题: 我对 shell 脚本非常陌生。我有两个目录 A 和 B,每个目录包含大约 100 个文件。文件夹 A 和 B 中的文件具有完全相同的名称,但内容不同,因为它们是来自不同服务器的 xml 响应。 我有一个 xmldiff 实用程序,它将查找这些文件中的差异并为差异生成另一个文件 result.xml,它适用于以下命令:
xmldiff A/file1.xml B/file1.xml Result/result1.xml
所以,我需要一个 shell 脚本来循环遍历文件夹 A 和 B,从每个文件夹中选择 filename1, 将其传递给 xmldiff 并获取 result.xml...(对于所有 100 个文件)
请您参考如下方法:
#!/bin/bash
APP="xmldiff"
A="folder path"
B="folder path"
result="folder path"
# This function extract the basename /path/to/basename.ext -> basename
getBaseName(){
local name="$1"
basename=`echo "$name" | sed -r -e "s/.+\/([^\/]+)\.[^\.]+$/\1/"`
echo "$basename"
}
for _file in $A/*
do
filename=`getBaseName "$_file"`
# I'm assuming here that you have only xml files ending in .xml
"$APP" "$A/${filename}.xml" "$B/${filename}.xml" "$result/${filename}_result.xml"
done
注意:将其复制到新的文本文件中。然后从命令行输入:chmod +x yourfilename。要从同一文件夹执行:./yourfilename