格式化目录中的所有XML文件并将其保存在子目录中

时间:2013-12-13 22:35:57

标签: bash find xargs xmllint

我正在尝试编写一个脚本,该脚本将查看目录,查找所有XML文件,通过xmllint运行它们,并将格式化结果保存到名为{的子目录中的同名文件中{1}}。这是我到目前为止的脚本:

formatted

这在某种程度上有效。该子目录以一个名为find . -maxdepth 1 -type f -iname "*.xml" | xargs -I '{}' xmllint --format '{}' > formatted/'{}' 的文件结束,该文件只是通过"{}"处理的最终文件的结果。如何将文件正确写入子目录?

1 个答案:

答案 0 :(得分:5)

您看到的名为{}的文件可能应该包含所有格式化文件。原因是您正在使用的重定向实际上不是xargs看到的命令的一部分。重定向由shell解释,因此它的作用是运行

find . -maxdepth 1 -type f -iname "*.xml" | xargs -I '{}' xmllint --format '{}'

并将输出保存到名为formatted/{}的文件中。

尝试使用--output的{​​{1}}选项代替重定向:

xmllint

您还可以使用... | xargs -I '{}' xmllint --format '{}' --output formatted/'{}' 的{​​{1}}选项来避免致电xargs

-exec