我写了一个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
要求是这些文件会在几秒钟内自动删除。所以我们只计算不同的文件数。此外,我们不确定这些文件保留在目录中的时间。
请在上述代码中提供我应该做的更改。
答案 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`