1

我写了一个 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

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

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

4

2 回答 2

3

如果您仍然在使用 Bash,请使用它的内置工具。

#!/bin/bash

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

参见例如关于 Bash 中数组的 ASG 章节

如果您想查看在两次迭代之间添加或删除了哪些文件,请使用两个数组,然后比较它们

同样,如果你想排除目录,你可以做一个数组交集D:/Dir1/*/.

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

于 2013-09-16T05:18:25.397 回答
2

为什么你不能这样做:

FILECOUNT=`find -type f $LOCATION | wc -l`
于 2013-09-16T05:03:46.713 回答