如何使用ls退出bash循环?

时间:2010-03-25 19:32:32

标签: bash loops while-loop exit

我想批量循环遍历目录中的一系列文件,然后在目录为空时退出。

$ work'myprog'实际上是一个程序,它以100个批量处理(并存档)Maildir中的传入电子邮件。

我追求的是一些简单易懂的东西。

#!/bin/bash

# Setup
mkdir -p foo && touch foo/file_{1,2,3,4}.txt
alias myprog='f=`ls foo/file_*.txt | head -n1`; rm -v $f'

# Loop and then exit ?!
# This line to go into cron.
while (ls foo); do ls foo/ | wc -l; myprog; sleep 1; done

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我想你可以这样做:

#!/bin/bash
# ...
while (ls foo/* &> /dev/null); do myprog; sleep 1; done

如果没有匹配foo / *(如果目录foo中没有可见文件),ls将失败。 &安培;> / dev / null使ls保持安静。