Unix 上的文件计数
FileCount on Unix
我正在尝试查找目录中的文件数。我正在使用 ls 命令。根据文件数量,我需要显示计数和一条消息。脚本未提供所需的输出。如有任何帮助,我们将不胜感激。
#!/bin/sh
FILECOUNT = $(ls /opt/report/ | grep *.ZIP_30 | wc -l);
if [ $FILECOUNT -gt "0" ]; then
echo "Statistic.filecount: $FILECOUNT";
echo "Message.filecount: Normal";
else
echo "Statistic.filecount: $FILECOUNT";
echo "Message.filecount: Warning";
fi;
exit 0;
您有一个语法错误。
shell 中 =
周围不允许有空格,因此:
filecount=$(grep -c ZIP_30 /opt/report/*)
一般建议不要解析 ls
的结果,因此我建议您使用以下命令:
find /opt/report/ -maxdepth 1 -name "*.ZIP_30" | wc -l
除了 and the quoting issue that William Pursell 评论的围绕 =
的语法错误外,还有一种更简单的计算文件数量的方法:使用 shell!
shopt -s nullglob
set -- /opt/report/*.ZIP_30
filecount=$#
if [ "$filecount" -gt 0 ]; then
echo "Statistic.filecount: $filecount";
echo "Message.filecount: Normal";
else
echo "Statistic.filecount: $filecount";
echo "Message.filecount: Warning";
fi;
exit 0;
基本思想是使用shell 的通配符(通配符)扩展功能将位置参数设置为匹配文件列表。对于完全没有匹配文件的情况,我使用了 bash shell 特性 (nullglob)。通常,shell 会留下 /opt/report/*.ZIP_30
文本作为空匹配的结果,但我们正在尝试对文件进行计数,因此我们希望它在没有任何匹配文件时消失。 $#
变量获取位置参数的数量,这为我们提供了文件计数。我还小写了 shell 变量号,作为防止破坏 built-in shell 变量名的好习惯。
我正在尝试查找目录中的文件数。我正在使用 ls 命令。根据文件数量,我需要显示计数和一条消息。脚本未提供所需的输出。如有任何帮助,我们将不胜感激。
#!/bin/sh
FILECOUNT = $(ls /opt/report/ | grep *.ZIP_30 | wc -l);
if [ $FILECOUNT -gt "0" ]; then
echo "Statistic.filecount: $FILECOUNT";
echo "Message.filecount: Normal";
else
echo "Statistic.filecount: $FILECOUNT";
echo "Message.filecount: Warning";
fi;
exit 0;
您有一个语法错误。
shell 中 =
周围不允许有空格,因此:
filecount=$(grep -c ZIP_30 /opt/report/*)
一般建议不要解析 ls
的结果,因此我建议您使用以下命令:
find /opt/report/ -maxdepth 1 -name "*.ZIP_30" | wc -l
除了 =
的语法错误外,还有一种更简单的计算文件数量的方法:使用 shell!
shopt -s nullglob
set -- /opt/report/*.ZIP_30
filecount=$#
if [ "$filecount" -gt 0 ]; then
echo "Statistic.filecount: $filecount";
echo "Message.filecount: Normal";
else
echo "Statistic.filecount: $filecount";
echo "Message.filecount: Warning";
fi;
exit 0;
基本思想是使用shell 的通配符(通配符)扩展功能将位置参数设置为匹配文件列表。对于完全没有匹配文件的情况,我使用了 bash shell 特性 (nullglob)。通常,shell 会留下 /opt/report/*.ZIP_30
文本作为空匹配的结果,但我们正在尝试对文件进行计数,因此我们希望它在没有任何匹配文件时消失。 $#
变量获取位置参数的数量,这为我们提供了文件计数。我还小写了 shell 变量号,作为防止破坏 built-in shell 变量名的好习惯。