我不确定这在一行中是否可行(即,不编写脚本),但我想运行一个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
实例,其中n
是从我的ls | grep
命令返回的结果数。这可能吗?
谢谢大家!
最佳答案
尝试循环查看结果:
for i in `ls | grep -i <something>`; do
eog $i
done
或者你可以用一行:
for i in `ls | grep -i <something>`; do eog $i; done
编辑:如果希望
eog
实例并行打开,请使用eog $i &
在新进程中启动每个实例。更新后的一行将显示:for i in `ls | grep -i <something>`; do (eog $i &); done