Linux:监视目录中的文件数

时间:2010-10-21 17:40:35

标签: linux shell

我正在尝试编写一个shell脚本,等待指定目录中的文件数(比如〜/ fit /)达到预定义的数字。到目前为止我得到的是:

limit = 10
while [ls ~/fit/ | wc -l -lt $limit]
do
  sleep 1
done

这说 - -tt是wc的无效选项。我也试过

[$limit -gt ls ~/fit/ | wc -l]

但它也没有用。非常感谢任何帮助。

4 个答案:

答案 0 :(得分:2)

尝试:

limit=10
while [ `ls ~/fit/ | wc -l` -lt $limit ];
...

答案 1 :(得分:2)

你需要:

limit=10
while [ `ls ~/fit/ | wc -l` -lt $limit ]
do
  sleep 1
done

的变化:

  • =周围不应有空格 在limit=10
  • 周围应该有空格 []
  • 您需要放置命令 在后面的刻度中获取文件计数(ls ~/fit/ | wc -l)。

答案 2 :(得分:1)

试试这个

while(true)
do
var=`ls -l ~/fit/ | wc -l`
  if [ $var -lt 10]
  then
    sleep 1
  else
    break
  fi
done

答案 3 :(得分:1)

最小化外部流程使用的解决方案,例如lswctrue,并正确管理包含换行符的文件名的(异常)情况:

#!/bin/sh

nmax=10

while :; do
  n=0
  for f in ~/fit/*; do
    n=$((n+1))
  done
  [ $n -ge $nmax ] && break
  sleep 1
done

echo "Limit reached!"