我正在尝试编写一个脚本来查看目录,找到所有 XML 文件,然后运行它们xmllint
,并将格式化结果保存到名为的子目录中的同名文件中formatted
。这是我到目前为止的脚本:
find . -maxdepth 1 -type f -iname "*.xml" | xargs -I '{}' xmllint --format '{}' > formatted/'{}'
这在一定程度上是有效的。该子目录最后有一个文件,名为"{}"
,这只是最终文件经过处理的结果xmllint
。如何使文件正确写入子目录?
该文件名为{}
你看到的可能应该包含all将格式化文件放在一起。原因是您使用的重定向实际上并不是命令的一部分xargs
看到了。重定向由 shell 解释,因此它所做的是运行
find . -maxdepth 1 -type f -iname "*.xml" | xargs -I '{}' xmllint --format '{}'
并将输出保存到名为的文件中formatted/{}
.
尝试使用--output
的选项xmllint
而不是重定向:
... | xargs -I '{}' xmllint --format '{}' --output formatted/'{}'
您也可以避免致电xargs
通过使用-exec
的选项find
:
find . -maxdepth 1 -type f -iname "*.xml" -exec xmllint --format '{}' --output formatted/'{}' \;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)