应用 xargs
发表于 2011 年 2 月 23 日
有些命令比第一眼看上去更有用。 在我看来,xargs 就是其中之一。 它接受标准输入并用它来构建命令行。 它并不花哨,但在某些情况下非常方便。
一旦你有了一个文件列表,你就可以很容易地对它们做一些事情。 一个我最喜欢的,而且很常见的,以至于在我的机器上有一个它自己的 shell 脚本,就是 clean-titles.sh。 它只是使用模式 *~ 定位所有备份文件,然后将它们传递给 rm。 结果是一个干净整洁的当前工作目录和子树。
#!/bin/sh find -iname '*~' | xargs rm
不要忘记模式周围的单引号,否则 bash 可能会为您扩展它。
另一个 xargs 派上用场的地方是当你想根据内容查找文件并对它们执行某种操作时。 例如,让我们找到所有那些讨厌的 TODO 注释,并在 kate 中打开这些文件。
grep TODO -r . | sed 's/:.*//' | sort -u | xargs kate -u
kate 的 -u 参数确保 xargs 重用现有会话而不是打开新窗口。 这只是我喜欢的方式,我甚至为 kate 设置了一个别名,所以我总是使用 kate -u。 但是,别名不被 xargs 使用,所以我必须显式地添加该标志。
完全不同的,但有点相似的是 xclip 命令。 在一个完美的世界里,我可能只想把所有的 TODO 发给同事。 只是用 xclip 替换 xargs 就可以把所有的文件名都放到剪贴板里。
grep TODO -r . | sed 's/:.*//' | sort -u | xclip
现在我只需要在把它粘贴到邮件里之前添加一个标题。"嗨,我希望你明天完成这些!"