仅当目录中的文件数量大于 1 时才需要 if 语句来运行任务

仅当目录中的文件数量大于 1 时才需要 if 语句来运行任务

我想编写一个脚本,但我想要一个 if 语句,这样只有当目录中的文件数大于 1 时它才会运行。这可能吗?

答案1

就像是

[ "$(ls -b | wc -l)" -gt 1 ] && { ... your statements ... }

答案2

我需要用这个:

shopt -s nullglob
files=($dir/*) # $dir was declared earlier if you look at my script
if (( "${#files[@]}" >= 2 ));
     <statements>
fi
shopt -u nullglob

这里发布的所有解决方案都不起作用的原因如下。脚本正在针对目录执行语句,它实际上并没有将 CD 插入到目录中。通过告诉它我正在处理的文件夹 ($dir),它会得到提示并按预期工作。

答案3

我将使用类似如下的方法:

    dir=.
    nf=`find . -maxdepth 1 -type f | wc -l`

    if [ "$nf" -gt "1" ] ; then
            <do something here>
    fi

这种方法只会计算files指向的目录dir并丢弃任何可能的子目录。

不要忘记dir根据您的需要进行相应的更改。

相关内容