Linux:查看目录中的文件数量

问题描述 投票:0回答:5

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

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

这表示 -lt 对于 wc 来说是无效的选项。我也试过

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

但它也不起作用。非常感谢任何帮助。

linux shell
5个回答
2
投票

尝试:

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

2
投票

您需要:

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

变化:

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

1
投票

最大限度地减少外部进程(如

ls
wc
true
)的使用的解决方案,并正确管理包含换行符的文件名(不常见)的情况:

#!/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!"

1
投票

试试这个

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


0
投票

您可以使用以下命令;

watch -n 1 'ls -l /your/path/|wc -l'
© www.soinside.com 2019 - 2024. All rights reserved.