Как выйти из цикла bash, используя ls? - PullRequest
1 голос
/ 25 марта 2010

Я хочу перебрать серию файлов в каталоге в пакетном режиме, а затем завершить работу, когда каталог пуст.

На $ work 'myprog' - это программа, которая обрабатывает (и архивирует) входящую электронную почту в Maildir партиями по 100 штук.

Я стремлюсь к чему-то простому, что могу поместить в cron.

#!/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 Ответ

2 голосов
/ 25 марта 2010

Полагаю, вы можете сделать:

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

Если ничего не соответствует foo / * (если в каталоге foo нет видимых файлов), ls завершится ошибкой. &> / dev / null хранит ls тихо.

...