当我尝试运行以下代码时,它给出了cp: target "Featurespath" is not a directory
的错误
我尝试了多种选择,但没有用。
Featurespath=/permanent/jag/media-*/*/print/cooked/*Features.xml
for file in $(ls $Featurespath);
do
cat $Featurespath | sed "/pB-/s/Direction=\"unidir\"/Direction=\"bidir\"/" $Featurespath > /permanent/jag/temp.xml
cp -rf /permanent/jag/temp.xml $Featurespath
rm /permanent/jag/temp.xml
done
我希望将修改后的xml粘贴到同一xml文件中。
答案 0 :(得分:1)
您收到的错误是由于cp
行引起的:bash将$Featurespath
扩展到文件列表中。当cp
看到两个以上的参数时,它假定最后一个参数是目录,在这种情况下不是这样。这是我建议的解决方法:
Featurespath=/permanent/jag/media-*/*/print/cooked/*Features.xml
for file in $Featurespath
do
sed "/pB-/s/Direction=\"unidir\"/Direction=\"bidir\"/" "$file" > /permanent/jag/temp.xml
mv -f /permanent/jag/temp.xml "$file"
done
ls
:bash可以很好地扩展通配符$file
,而不是文件$Featurespath
的列表cat
命令,sed
命令可以获取文件名sed
具有内联编辑选项,可消除对临时文件的需求。您可能需要调查一下。cp
代替rm
/ mv
组合sed
不是编辑XML内容的正确工具,但它可能适用于简单的情况