如何在bash中将一个命令的多个结果发送到另一个命令?

Nat*_* W. 1 unix linux bash shell

我不确定这是否可能在一行中(即,没有编写脚本),但我想运行一个ls | grep命令,然后为每个结果,将它传递给另一个命令.

具体来说,我有一个充满图像的目录,我只想查看某些目录.我可以过滤我感兴趣的图像ls | grep -i <something>,这将返回匹配文件的列表.然后对于每个文件,我想通过传入来查看它eog.

我试过简单地将结果传递给eog:

eog $(ls | grep -i <something>)

这不太有效,因为它只会打开结果列表中的第一个条目.

那么,如何eog FILENAME对结果列表中的每个条目执行而不必将此操作捆绑到脚本中?

编辑:正如答案中所建议的那样,我可以使用如下for循环:

for i in 'ls | grep -i ...'; do eog $i; done

这有效,但循环等待迭代,直到我关闭当前打开的eog实例.

理想情况下,我想要一次打开所有n实例,从命令返回的结果数量eog在哪里.这可能吗?nls | grep

谢谢大家!

Car*_*rum 8

我会用xargs:

$ ls | grep -i <something> | xargs -n 1 eog
Run Code Online (Sandbox Code Playgroud)