查找:缺少带有 + 的 -exec 参数?

查找:缺少带有 + 的 -exec 参数?

假设在 bash 脚本中我有以下内容:

# Count the number of wood.dat files
numWoodFiles=($( find ./$1_* -type d -exec find {} -type f -name "wood\.dat" \+  | wc -l  ))

当我运行它时,我收到以下错误:

find: missing argument to `-exec'

我想使用+运算符,以便命令运行得更快并且同时运行,而不是;按顺序运行它。

答案1

使用时find ... -exec ... {} +,将{} 必须是之前的最后一件事+(因为find将路径名添加到命令的末尾)。该错误来自于缺少;第一个末尾的find

首先找到所有子目录,然后对这些子目录执行另一个搜索没有任何好处,因此您的find命令可以替换为单个find

find "./$1_"* -type f -name 'wood.dat'

这将查找wood.dat在所有匹配的目录中调用的文件"./$1_"*

整个作业将是

numWoodFiles=$( find "./$1_"* -type f -name 'wood.dat' | wc -l )

我删除了外部,(...)因为我们不需要为单个整数创建数组。

相关内容