对 Bash 中的字符串列表执行命令
Execute a command on a list of strings in Bash
我正在尝试从给定目录中查找所有 C# 接口。我尝试执行此命令:
find . -type f | xargs basename | grep ^I
但是 basename
返回了一个错误,因为我向它发送了一个字符串列表,而不是字符串本身。如何让 basename
的输出在所有通过管道传递给它的字符串上执行?
使用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
是 "filename with all but the last component removed" 的 GNU find printf 格式。还有许多其他可能的格式代码;有关详细信息,请参阅 man find
。
我正在尝试从给定目录中查找所有 C# 接口。我尝试执行此命令:
find . -type f | xargs basename | grep ^I
但是 basename
返回了一个错误,因为我向它发送了一个字符串列表,而不是字符串本身。如何让 basename
的输出在所有通过管道传递给它的字符串上执行?
使用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
是 "filename with all but the last component removed" 的 GNU find printf 格式。还有许多其他可能的格式代码;有关详细信息,请参阅 man find
。