shell脚本,用于计算10秒内目录中传入文件的数量

时间:2013-09-16 04:26:24

标签: bash shell

我写了一个SHELL SCRIPT,它将计算目录中的这些文件的数量(以分钟为单位)。

#!/bin/bash
LOCATION="D:/Dir1/*"
FILECOUNT=0
while true
do
  for item in $LOCATION
  do
    if [ -f $item ]
    then
       FILECOUNT=$[$FILECOUNT+1]
    fi
  done
  echo "No of files are $FILECOUNT"
  FILECOUNT=0
  sleep 30s
done

要求是这些文件会在几秒钟内自动删除。所以我们只计算不同的文件数。此外,我们不确定这些文件保留在目录中的时间。

请在上述代码中提供我应该做的更改。

2 个答案:

答案 0 :(得分:3)

如果您仍在使用Bash,请使用其内置设施。

#!/bin/bash

files=( D:/Dir1/* )
echo Count: "${#files[@]}"

参见例如ASG chapter on arrays in Bash

如果要查看在两次迭代之间添加或删除的文件,请使用两个数组和compare them

同样,如果您要排除目录,可以使用D:/Dir1/*/.执行array intersection

最终,两个临时文件之间的简单diff可能更接近您实际需要的内容。参见例如Monitor Directory for Changes

答案 1 :(得分:2)

为什么你不能这样做:

FILECOUNT=`find -type f $LOCATION | wc -l`