-1

我有以下 BASH 脚本: http: //pastebin.com/CX4RN1QW

仅当目录中的文件数为 2 或更多时,我才想运行脚本中的两个部分。它们由## Begin file test here和标记## End file test.

我对脚本非常敏感,我不希望有任何其他更改,即使它简化了它。

我努力了:

if [ "$(ls -b | wc -l)" -gt 1 ];

但这没有用。

4

2 回答 2

3

ls您可以使用 glob 来检查目录中是否存在文件,而不是使用外部命令:

编辑我错过了您正在寻找> 2个文件。更新。

shopt -s nullglob # cause unmatched globs to return empty, rather than the glob itself
files=(*) # put all file in the current directory into an array
if (( "${#files[@]}" >= 2 )); then # since we only care about existence, we only need to expand the first element
   ...
fi
shopt -u nullglob # disable null glob (not required)
于 2012-07-02T17:59:43.477 回答
1

你需要ls -1在那里让它工作,因为 -b 不会让它每行打印一个项目。或者使用find, 因为它默认这样做。

于 2012-07-02T17:33:17.900 回答