Xargs 的最佳输出格式
我正在编写一个简单的程序来运行系统上各个目录中的一堆文件。它基本上涉及打开它们并检查有效的 XML。该程序的选项之一是列出错误的 xml 文件。
这引出了我的问题。将其格式化以与 XARGS 一起使用的最佳输出是什么?我认为将每个条目放在换行符上就足够了,但这似乎有点令人困惑。因为文件名都有空格。
所以说我的输出是:
./dir name 1/file 1.xml
./dir name 2/file 2.xml
./dir name 3/file 3.xml
我尝试了以下命令,但它一直说“没有这样的文件或目录”。
./myprogram.py --list BADXML | xargs -d '\n' cat
所以..我要么误解了如何使用 XARGS,要么我需要稍微改变程序输出的格式。我不确定来这里的最佳最容易使用的路线。如果我可以避免的话,我不想总是输入一堆 xarg 选项。
I'm writing a simple program to run through a bunch of files in various directories on my system. It basically involves opening them up and checking for valid XML. One of the options of this program is to list bad xml files.
This leads me to my question. What the best output to format this for use with XARGS. I thought putting each entry on a newline would be good enough, but it seems a bit confusing. because the filenames all have spaces.
So say my output is:
./dir name 1/file 1.xml
./dir name 2/file 2.xml
./dir name 3/file 3.xml
I tried the following command, but it keeps saying "No such file or directory".
./myprogram.py --list BADXML | xargs -d '\n' cat
So.. I am either misunderstanding how to use XARGS or I need to slightly change the format of the output of my program. I am not sure the best easiest to use) route to take here. i would hate to have to always type a mess of xarg options if I can avoid it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
man xargs
man xargs
您可以放弃 xargs,并使用 read:
xargs 可以做的任何事情,while-read 循环可以做得更好...
Postscript 根据我的 什么时候 xargs 应该优先于 while-read-loops 问题,答案强调了 xargs 的非常强大的效率案例,尽管它使用一些额外的脚本来模拟 xargs 的参数聚集并不太困难,例如
You could ditch xargs, and use read:
Anything xargs can do, while-read loops can do better...
Postscript Per my When should xargs be preferred over while-read-loops question, the answers stressed a very strong efficiency case for xargs, although it is not too difficult to simulate the argument bunching of xargs with some extra scripting, e.g.
使用 GNU Parallel http://www.gnu.org/software/parallel/ 你应该能够在不更改 myprogram.py 的情况下完成此操作:
额外的好处:猫将并行运行,因此在多核计算机上可能会更快。
With GNU Parallel http://www.gnu.org/software/parallel/ you should be able to do it with no change to myprogram.py:
Added bonus: the cat will run in parallel and may thus be faster on multicore computers.