user14636593
user14636593

Reputation:

-exec wc -l {} \; prints count and path, I just need count

Lines=(find $FILEDIRECTORY -iname "*$FILEENDING" -exec wc -l {} \;)

The User can put in his path and file ending and it should count how many lines each program has... if User just wc -l it prints me out how man files I have with that file ending what I want is:

100
78
45

So from every file the lines

Upvotes: 3

Views: 119

Answers (1)

anubhava
anubhava

Reputation: 785521

You may use it like this:

find $FILEDIRECTORY -iname "*$FILEENDING" -exec \
sh -c 'for f; do wc -l < "$f"; done' _ {} +

Please understand that:

  • wc -l < file only prints line count without filename
  • + after exec is much more efficient than \; as find tries to pass multiple files in argument.
  • for f is shorthand for for f in "$@"

Altenative Solution:

find $FILEDIRECTORY -iname "*$FILEENDING" -exec grep -hc '^' {} +

If + doesn't work in your find then use:

find $FILEDIRECTORY -iname "*$FILEENDING" -exec grep -hc '^' {} \;

Upvotes: 1

Related Questions