在Bash中的字符串列表上执行命令

时间:2015-06-22 02:19:17

标签: bash xargs

我试图从给定目录中找到所有C#接口。我尝试过这个命令:

find . -type f | xargs basename | grep ^I

但是basename正在回复错误,因为我发送了一个字符串列表,而不是字符串本身。如何获取basename输出的所有字符串传输给它?

2 个答案:

答案 0 :(得分:2)

您不需要使用xargs。您可以使用:

find . -type f -name 'I*' -exec basename '{}' ';'

如果您使用的是GNU查找,则不需要basename

find . -type f -name 'I*' -printf %f\\n

这里,%f是"文件名的GNU查找printf格式,其中除最后一个组件以外的所有组件都已删除"。还有许多其他可能的格式代码;有关详细信息,请参阅man find

答案 1 :(得分:1)

使用xargs -i可以解决问题:

find . -type f | xargs -i basename "{}" | grep ^I