![查找:缺少带有 + 的 -exec 参数?](https://linux22.com/image/131911/%E6%9F%A5%E6%89%BE%EF%BC%9A%E7%BC%BA%E5%B0%91%E5%B8%A6%E6%9C%89%20%2B%20%E7%9A%84%20-exec%20%E5%8F%82%E6%95%B0%EF%BC%9F.png)
假设在 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 )
我删除了外部,(...)
因为我们不需要为单个整数创建数组。