例如,我具有以下结构
mydir/a/fileA.txt
mydir/b/fileB.js
mydir/fileC.js
Im file A
Im file B
Im file C
我想(递归地)将mydir
目录中所有文件的内容合并到output.txt
中-在每个文件内容之前都应包含此分隔符(作为第一行)---next-file->>>:
以及该文件的路径(从mydir / ..开始),并用新行换行。因此,上述示例的期望输出应为
---next-file->>>: mydir/a/fileA.txt
Im file A
---next-file->>>: mydir/b/fileB.js
Im file B
---next-file->>>: mydir/fileC.js
Im file C
我尝试了以下代码,但不知道如何在每个文件路径中包含分隔符
find mydir/ -exec cat {} \; > output.txt
答案 0 :(得分:1)
对于JSONObject pack = new JSONObject(); // new instance
pack.put("imgid", resID2);
pack.put("desc", descval);
Log.d("PERSODEBUG", pack.toString());
trolly.put(itemID, pack.toString());
命令之间的文本插入,请使用多个cat
。
-exec
答案 1 :(得分:1)
以下应该是正确的:
find mydir -type f -exec echo -n '---next-file->>>: ' \; -print -exec echo \; -exec cat {} \; -exec echo \; > output.txt
您可以duaIterate.py
试试。
一个更干净的解决方案,如果可以使用GNU find:
find mydir -type f -printf '---next-file->>>: %p\n\n' -exec cat {} \; -printf '\n' > output.txt
以%p
格式的 -printf
是指文件的相对路径。
您可以here试试。
答案 2 :(得分:1)
这怎么样?
find mydir/ -type f -exec sh -c '
for f; do
printf '--- %s ->>>:\n\n' "$f"
cat "$f"
printf '\n'
done' _ {} +
这应该为每个文件仅创建一个子进程,再为find
本身创建一个子进程,为sh
创建一个子进程(如果找到的文件多于find
,则可以有更多的外壳程序,可以在一个子进程中传递去)。