Comment afficher le contenu du fichier de manière récursive?

6

Je dois toujours soumettre les codes sources dans mon rapport de mission imprimé. Je dois copier et coller mes codes de cours dans le document et je trouve que c'est une tâche fastidieuse.

Je veux résoudre ce problème de "copier / coller" . Donc je l'ai fait avec catça, mais ça ne marche que dans le répertoire courant. J'espère qu'il peut afficher le contenu du fichier de manière récursive.

ls -R *.java | xargs cat >> all_course.txt
utilisateur1022209
la source

Réponses:

13

Vous pouvez utiliser find( page de manuel ) pour accomplir ceci:

find -name "*.java" -exec cat {} \;

Vous pouvez également ajouter un -printavant le -execpour imprimer le nom du fichier avant chaque opération de chat.

Cottonke
la source
8
find . -name "*.java" -print0 | xargs -0 cat 
Satish
la source
1
Le {} \;n'est pas nécessaire après le chat ... ceux-ci ne sont utilisés que dans la -execcommande find .
^^ D'accord. corrigé ...
anishsane
3
shopt -s globstar
cat **/*.java >> all_course.txt

Ce fichier all_course sera un peu le bordel. Vous voudrez probablement ajouter des en-têtes ou des pieds de page:

for f in **/*.java; do
    echo "/* *********************************"
    echo " * $f"
    echo " * *********************************/"
    echo ""
    cat "$f"
    echo ""
    echo "/* *********************************"
    echo " * $f"
    echo " * *********************************/"
    echo ""
    echo ""
done > all_course.txt
Glenn Jackman
la source
1
find . -name "*.java" -exec cat {} \;
Danstahr
la source
1
 grep -R -win --include='*\.java' '' * | less

Affichera la ligne no. aussi, pour une lecture facile. Manipulez avec les commutateurs grep pour de meilleurs résultats.

okobaka
la source