在bash for循环中分离进程

时间:2012-04-30 15:48:55

标签: bash

我经常发现自己想要查看目录中的一堆图。我通常会这样做:

for PLT in *.png; do bash -c "display ${PLT} &" ; done

因为

for PLT in *.png; do display ${PLT} & ; done  #doesn't work :-(

对于这种事情,是否有更容易/更少丑陋/更好的习语? 我也尝试在括号中包含命令,但这也不起作用(它只打开一个图)...

for PLT in *.png; do ( display ${PLT} ) ; done

修改

请注意,我正在使用互动终端。如果我编写一个脚本并将第二个for循环分成多行,它就可以正常工作......

2 个答案:

答案 0 :(得分:6)

在&:

之后删除分号
for PLT in *.png; do display ${PLT} & done

此外,使用“$ {PLT}”是一个很好的做法,以防你的文件名中包含空格。

答案 1 :(得分:-2)

我认为您可以使用xargs执行此操作。

ls *.png | xargs -0 -n 1 -P 10 display

任何一个选项都可能更安全,具体取决于您需要处理多少个png文件。