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

在Bash中对字符串列表执行命令,bash,xargs,Bash,Xargs,我试图从给定目录中查找所有C#接口。我尝试执行以下命令: find . -type f | xargs basename | grep ^I 但是basename返回了一个错误,因为我向它发送的是字符串列表,而不是字符串本身。如何获得通过管道传输到它的所有字符串执行的basename的输出?使用xargs-I可以解决以下问题: find . -type f | xargs -i basename "{}" | grep ^I 使用xargs-i可以解决以下问题: find . -type f

我试图从给定目录中查找所有C#接口。我尝试执行以下命令:

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

但是
basename
返回了一个错误,因为我向它发送的是字符串列表,而不是字符串本身。如何获得通过管道传输到它的所有字符串执行的
basename
的输出?

使用
xargs-I
可以解决以下问题:

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

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

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

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

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

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

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

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

find . -type f -name 'I*' -exec basename '{}' ';'
如果您使用的是GNU find,则不需要
basename

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

这里,
%f
是GNU find printf格式,用于“除最后一个组件之外的所有文件名”。还有许多其他可能的格式代码;有关详细信息,请参见
man find

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

find . -type f -name 'I*' -exec basename '{}' ';'
如果您使用的是GNU find,则不需要
basename

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

这里,
%f
是GNU find printf格式,用于“除最后一个组件之外的所有文件名”。还有许多其他可能的格式代码;有关详细信息,请参见
man find

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

find . -type f -name 'I*' -exec basename '{}' ';'
如果您使用的是GNU find,则不需要
basename

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

这里,
%f
是GNU find printf格式,用于“除最后一个组件之外的所有文件名”。还有许多其他可能的格式代码;有关详细信息,请参见
man find

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

find . -type f -name 'I*' -exec basename '{}' ';'
如果您使用的是GNU find,则不需要
basename

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


这里,
%f
是GNU find printf格式,用于“除最后一个组件之外的所有文件名”。还有许多其他可能的格式代码;有关详细信息,请参见
man find

关于
的内容如何xargs-i basename“{}”|…
?@higuaro谢谢!(顺便说一句,你可能想把它作为答案。)
echoi*
有什么问题吗?(也许你真的需要一个递归列表,或者你的文件夹名称以
I
开头。)@rici是的,为了澄清我想要一个递归列表。
呢xargs-i basename“{}”|…
?@higuaro谢谢!(顺便说一句,你可能想把它作为答案。)
echoi*
有什么问题吗?(也许你真的需要一个递归列表,或者你的文件夹名称以
I
开头。)@rici是的,为了澄清我想要一个递归列表。
呢xargs-i basename“{}”|…
?@higuaro谢谢!(顺便说一句,你可能想把它作为答案。)
echoi*
有什么问题吗?(也许你真的需要一个递归列表,或者你的文件夹名称以
I
开头。)@rici是的,为了澄清我想要一个递归列表。
呢xargs-i basename“{}”|…
?@higuaro谢谢!(顺便说一句,你可能想把它作为答案。)
echoi*
有什么问题吗?(也许你真的需要一个递归列表,或者你的文件夹名称以
I
?)开头@rici是的,为了澄清我想要一个递归列表。很好;与通过
xargs
@JamesKo管道传输相比,它们运行得非常快:如果您的发现支持,那么第二个应该是最快的,因为它不需要启动任何新进程;与通过
xargs
@JamesKo管道传输相比,它们运行得非常快:如果您的发现支持,那么第二个应该是最快的,因为它不需要启动任何新进程;与通过
xargs
@JamesKo管道传输相比,它们运行得非常快:如果您的发现支持,那么第二个应该是最快的,因为它不需要启动任何新进程;与通过
xargs
@JamesKo管道传输相比,它们运行得非常快:如果您的发现支持,那么第二个应该是最快的,因为它不需要启动任何新进程。