【发布时间】:2016-02-25 00:18:49
【问题描述】:
在回答this question 之后,我现在想知道进一步处理find -print0 的空分隔输出的最佳方法。
以下命令将在 find 返回的前 10 个文件中搜索一个短语 - 也许我们不想一次搜索太多。
find . -maxdepth 1 | head -10 | xargs grep "Specific Phrase"
但是,如果文件名中有换行符或空格,这可能会成为一个挑战,因为它们会弄乱我们的 xargs 命令。
我如何编写以下内容以使其正常工作 - 我可以在 bash 中执行此操作,还是需要使用 awk 之类的工具在空值处分解此字符串?
find . -maxdepth 1 -print0 | head -10 | xargs -0 grep "Specific Phrase"
似乎我可以用来描述的其他词是如何将字段分隔符更改为空字符。
【问题讨论】:
-
哪个外壳?这方面的设施在 bash 或 ksh 中比 POSIX sh 好得多。
-
我意识到我不知道如何在任何 shell 中做到这一点。让我们说
bash,因为它很常见。 -
那是一种“领先的评论”,因为下面提供的 solution @CharlesDuffy 是在 bash 中实现的,但问题只提到了大多数 shell 外部的工具。我很想看到这个问题的 Charles 认可的与 shell 无关的答案,或者至少一个在 POSIX shell 中工作的答案。
-
我也在下面发布了一个
awk答案,它不需要复杂的外壳机制。