如何递归显示文件内容?

如何递归显示文件内容?

我总是必须在打印的作业报告中提交源代码。我必须复制并粘贴我的课程代码进入文档,我发现这是一项令人讨厌的任务。

我想解决这个问题“复制和粘贴”问题。因此我用类似方法做了cat,但它只在当前目录中有效。我希望它可以递归显示文件内容。

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

答案1

您可以使用find手册页)来实现这一点:

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

您还可以-print在之前添加一个,以便-exec在每次 cat 操作之前打印文件名

答案2

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

答案3

shopt -s globstar
cat **/*.java >> all_course.txt

all_course 文件会有点乱。你可能需要添加一些页眉或页脚:

for f in **/*.java; do
    echo "/* *********************************"
    echo " * $f"
    echo " * *********************************/"
    echo ""
    cat "$f"
    echo ""
    echo "/* *********************************"
    echo " * $f"
    echo " * *********************************/"
    echo ""
    echo ""
done > all_course.txt

答案4

 grep -R -win --include='*\.java' '' * | less

还会显示行号,以便于阅读。使用 grep 开关可获得更好的结果。

相关内容