使用 bashfind命令搜索文件,我想将生成的文件连接到一个新文件中。例如,如果 find 命令产生:
find . -name "configuration_dev.txt"
./tmp/configuration1/configuration_dev.txt
./tmp/configuration2/configuration_dev.txt
Run Code Online (Sandbox Code Playgroud)
我想将两个文件的内容直接作为 bash 命令连接到一个新文件中。
一种可能的方法是通过管道传输findto的输出xargs并通过 连接文件的内容cat,然后您可以将输出重定向到新文件:
find . -name '*file*' | xargs -I{} cat "{}" > output
Run Code Online (Sandbox Code Playgroud)
上面的命令将调用cat每个文件,然后语句的整个输出 xargs将被重定向到该output文件。更有效的方法是使用空分隔符 - 感谢@pLumo的更新:
find . -name '*file*' -print0 | xargs -0 cat > output
Run Code Online (Sandbox Code Playgroud)
达到预期结果的命令是:
find . -name "configuration_dev.txt" -exec cat > testing.txt {} +
Run Code Online (Sandbox Code Playgroud)
这里提供了对上述行的一个很好的解释:What is Meaning of {} + in find's -exec command?