Search code examples
shellunixsolaris

Counting number of occurrences in several files


I want to check the number of occurrences of, let's say, the character '[', recursively in all the files of a directory that have the same extension, e.g. *.c. I am working with the SO Solaris in Unix.

I tried some solutions that are given in other posts, and the only one that works is this one, since with this OS I cannot use the command grep -o:

sed 's/[^x]//g' filename | tr -d '012' | wc -c

Where x is the occurrence I want to count. This one works but it's not recursive, is there any way to make it recursive?


Solution

  • You can get a recursive listing from find and execute commands with its -exec argument.

    I'd suggest like:

    find . -name '*.c' -exec cat {} \; | tr -c -d ']' | wc -c
    

    The -c argument to tr means to use the opposite of the string supplied -- i.e. in this case, match everything but ].

    The . in the find command means to search in the current directory, but you can supply any other directory name there as well.