以bash显示两个grep命令的结果

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

我正在尝试在文件名中查找具有两种不同模式的目录中的文件数。我不希望合并计数,但是显示合并结果。

命令1:find | grep ".coded" | wc -l |输出:4533

命令2:find | grep ".read" | wc -l |输出:654

寻求的输出:4533 | 654一行

有什么建议吗?谢谢!

bash grep find output
2个回答
1
投票

[使用GNU find,您可以使用-printf打印所需的内容,例如,每个与c匹配的文件都为.coded,而每个与.read匹配的文件都为“ r”,然后使用awk计算每个人有多少:

find -type f \
    \( -name '*.coded*' -printf 'c\n' \) \
    -o \
    \( -name '*.read*' -printf 'r\n' \) \
    | awk '{ ++a[$0] } END{ printf "%d | %d\n", a["c"], a["r"]}'

顺便说一下,您的grep模式与XcodedYread匹配,或者在您的期间内实际上匹配任何东西;如果它是一个字面上的句点,则必须像'\.coded''\.read'中那样转义。另外,如果您的文件名包含换行符,则计数为OFF。


1
投票

使用bash shell使用command substitutionpr

pr -mts' | ' <(find | grep "\.coded" | wc -l) <(find | grep "\.read" | wc -l)
© www.soinside.com 2019 - 2024. All rights reserved.