Easy shell解决方案为每行stdout执行命令

jam*_*her 5 shell

这应该是一个非常简单的任务:我想获取任何旧命令的stdout的每一行,并使用每个命令执行另一个命令作为参数.

例如:

ls | grep foo | applycommand'mv%s bar /'

这将使所有匹配" foo "并将其移动到bar /目录.

(我觉得有点尴尬,要求什么可能是一个非常明显的解决方案.)

Chr*_*ung 15

该程序被调用xargs.

ls | grep foo | xargs -I %s mv %s bar/
Run Code Online (Sandbox Code Playgroud)

  • xargs还允许您通过指定替换字符串在命令中间插入参数.即`xargs -I FILE mv文件栏/` (3认同)

Joh*_*ica 7

ls | grep foo | while read FILE; do mv "$FILE" bar/; done
Run Code Online (Sandbox Code Playgroud)

但是,这种特殊操作可以更简单地完成:

mv *foo* bar/
Run Code Online (Sandbox Code Playgroud)

或者对于递归解决方案:

find -name '*foo*' -exec mv {} bar/ \;
Run Code Online (Sandbox Code Playgroud)

find命令{}中将替换为匹配的文件列表.