在`find ... -exec bash -c`中使用awk

问题描述 投票:0回答:1

我的目录结构如下所示:

   .
   |-five
   |-four
   |-one
   |-seven
   |-six
   |-three
   |-two

每个子目录中都有文件,这些文件是

uniq -c
:

的输出
./five/failures.count
./four/failures.count
./one/failures.count
./six/failures.count
./three/failures.count
./two/failures.count
./seven/failures.count

我想做的是同时获取每个文件的总数。所以我尝试做的是:

find . -name "failures.count" -exec bash -c 'echo -n "$1: "; awk \'{n+=$1} END {print n}\' $1' bash {} \;

但这在某种程度上有不平衡的报价并等待我关闭它。我想要的是

awk
命令 (
{n+=$1} END {print n}
) 也用单引号引起来,以便
$1
命令中的
awk
不会扩展到文件名,这是
$1
bash
 参数
;
bash
的参数显然是单引号的,所以我不确定如何拼写它。我确实知道我无法像
echo
那样使用双引号,但正如我所说,我不确定如何操作必要的单引号来使其正常工作。

bash shell awk
1个回答
0
投票

你不需要 bash

find . -name failures.count -exec awk '{n+=$1} END{print FILENAME": "n}' {} \;
© www.soinside.com 2019 - 2024. All rights reserved.