【问题标题】:xargs and ex command inputxargs 和 ex 命令输入
【发布时间】:2011-07-07 04:41:25
【问题描述】:

有人可以解释为什么在尝试对多个文件运行 ex 命令脚本时,这是可行的:

for x in `ls *`;do ex $x <excmds;done;

但这不是:

ls *|xargs -i ex {} <excmds

第一个将为每个文件执行ex并在“excmds”中运行命令 第二,我不确定它做了什么,但它不会更改任何文件。 我猜重定向是一个问题,并且不会对 xargs 的每次执行起作用? 有没有办法用 xargs 做到这一点? (我在 xargs 上提出的另一个问题 - 也许我应该停止使用它:()

【问题讨论】:

  • 在这种情况下,xargs 将从excmds 读取其输入而不是 ls 的输出。
  • 嗯,好吧,这有点明显,现在我看看它。看起来这应该是答案,而不是评论,但我仍然想知道如何使用 xargs 来做到这一点
  • 乔我没有回答,因为我没有真正的答案(只有这个评论)。似乎xargs 是这个工作的错误工具,因为您想为每个文件执行一些命令恰好一次xargs 对于执行可以同时处理多个输入的命令很有用。
  • 要查看xargs 的作用,请使用-t 选项运行它。我还怀疑ls * 是正确的工具(在带有子文件夹的文件夹中尝试!)
  • @Jakob 谢谢,不知道-t,我还重读了关于 GNU Parallel 的答案,注意到 ls y*|xargs -i -t ex {} \<excmdsex ya &lt;excmds 然后它就挂了!假设您的意思是 ls 不是正确的工具

标签: redirect xargs


【解决方案1】:

使用 GNU 并行:

ls * | parallel ex {} \<excmds

观看介绍视频了解更多信息:http://www.youtube.com/watch?v=OpaiGYxkSuQ

10秒安装:

wget pi.dk/3 -qO - | sh -x

【讨论】:

    猜你喜欢
    • 2016-03-15
    • 1970-01-01
    • 2010-09-16
    • 2021-11-08
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 2012-01-07
    相关资源
    最近更新 更多