find . -name *.java | xargs cat | wc -l
find . -name *.java | xargs cat | wc -l
find . -name *.java -print0 | xargs -0 cat | wc -lThe command line can be a large as available memory (for a single processes). (Although the ratio between command line length and allocated memory is not obvious since it depends on the number of words in the command line.)
find . -name '*.java' -print0 | xargs -0 cat | wc -l --max-args=max-args
-n max-args
Use at most max-args arguments per command
line. Fewer than max-args arguments will be used
if the size (see the -s option) is exceeded,
unless the -x option is given, in which case xargs
will exit.The xargs utility shall limit the command line length such that when the command line is invoked, the combined argument and environment lists (see the exec family of functions in the System Interfaces volume of POSIX.1-2008) shall not exceed {ARG_MAX}-2048 bytes
so you should never run into the ARG_MAX limit.
E.g.: I like dumping temporary files with timestamps:
some-command-to-generate-log > /tmp/log-$( date +%Y%m%d-%H%M%S )
Now, if I want to wrap that in a larger loop -- say, iterating over a number of files or parameters:
command $( expansion one $( expansion 2 ))
Works
With backticks you'd have to do escapes:
command `expansion 1 \`expansion 2\` `
... which gets tedious.
because it requires less typing. The ISO 8601 standard format.
-Is, -Im, -Ih, and -Id allow you to change the displayed resolution.
Bizarrely, this doesn't seem to be documented in my version of date (coreutils 8.10).
That said, I can't find "-I" documented anywhere.
What I like about the timestamp I use is that it's semantic but sorts lexically as well. Though yours does as well. Hrm.
find . -iname '*.java' -exec cat {} + |wc -l
But if you do that, why not just: find . -iname '*.java' -exec wc -l {} +
Which will also print out output of wc -l for each files along with total lines.