我想编写一个脚本,但我想要一个 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
根据您的需要进行相应的更改。