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

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.


8
find . -name "*.java" -print0 | xargs -0 cat 

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


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.