Puoi usare find
(man page) per ottenere questo risultato:
find -name "*.java" -exec cat {} \;
Puoi anche aggiungere un -print
prima del -exec
per stampare il nome del file prima di ogni operazione cat
find . -name "*.java" -print0 | xargs -0 cat
shopt -s globstar
cat **/*.java >> all_course.txt
Quel file all_course sarà un po' un casino. Probabilmente vorrai aggiungere alcune intestazioni o piè di pagina:
for f in **/*.java; do
echo "/* *********************************"
echo " * $f"
echo " * *********************************/"
echo ""
cat "$f"
echo ""
echo "/* *********************************"
echo " * $f"
echo " * *********************************/"
echo ""
echo ""
done > all_course.txt