我正在尝试编写一个脚本,该脚本将查看目录,查找所有XML文件,通过xmllint
运行它们,并将格式化结果保存到名为{的子目录中的同名文件中{1}}。这是我到目前为止的脚本:
formatted
这在某种程度上有效。该子目录以一个名为find . -maxdepth 1 -type f -iname "*.xml" | xargs -I '{}' xmllint --format '{}' > formatted/'{}'
的文件结束,该文件只是通过"{}"
处理的最终文件的结果。如何将文件正确写入子目录?
答案 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