Puedes usar find
(página man) para lograr esto:
find -name "*.java" -exec cat {} \;
También puede agregar un -print
antes del -exec
para imprimir el nombre del archivo antes de cada operación cat
find . -name "*.java" -print0 | xargs -0 cat
shopt -s globstar
cat **/*.java >> all_course.txt
Ese archivo all_course será un poco complicado. Probablemente desee agregar algunos encabezados o pies de página:
for f in **/*.java; do
echo "/* *********************************"
echo " * $f"
echo " * *********************************/"
echo ""
cat "$f"
echo ""
echo "/* *********************************"
echo " * $f"
echo " * *********************************/"
echo ""
echo ""
done > all_course.txt