Como exibir o conteúdo do arquivo recursivamente?

6

Sempre tenho que enviar os códigos-fonte em meu relatório de tarefas impressas. Eu tenho que copiar e colar meus códigos de curso no documento e acho que é uma tarefa chata.

Eu quero resolver esse problema "copiar e colar" . Portanto, eu fiz isso com cat , mas só funciona no diretório atual. Espero que possa exibir o conteúdo do arquivo recursivamente.

ls -R *.java | xargs cat >> all_course.txt
    
por user1022209 10.01.2013 / 15:53

5 respostas

13

Você pode usar find ( página de manual ) para fazer isso:

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

Você também pode adicionar um -print antes do -exec para imprimir o nome do arquivo antes de cada operação de gato

    
por 10.01.2013 / 15:58
8
find . -name "*.java" -print0 | xargs -0 cat 
    
por 10.01.2013 / 16:02
3
shopt -s globstar
cat **/*.java >> all_course.txt

Esse arquivo all_course será um pouco confuso. Você provavelmente deseja adicionar alguns cabeçalhos ou rodapés:

for f in **/*.java; do
    echo "/* *********************************"
    echo " * $f"
    echo " * *********************************/"
    echo ""
    cat "$f"
    echo ""
    echo "/* *********************************"
    echo " * $f"
    echo " * *********************************/"
    echo ""
    echo ""
done > all_course.txt
    
por 10.01.2013 / 17:25
1
find . -name "*.java" -exec cat {} \;
    
por 10.01.2013 / 15:59
1
 grep -R -win --include='*\.java' '' * | less

mostrará a linha não. também, para facilitar a leitura. Manipule com switches grep para melhores resultados.

    
por 11.01.2013 / 01:08