我想在一个目录中列出所有文件,但是在每个文件之间加上一些空白。
使用awk命令
awk 'FNR==1{print ""}{print}' file* > out.txt
尝试
find . -type f -exec cat {} \; -exec echo "-- spacer --" \;
显然,“spacer”可以不止是这里使用的简单示例。
echo ""
来输出空行。我应该说,间隔符可以比示例更多或更少。 - paviumecho ''
或者只有 echo
怎么样? - pavium-printf "\n"
这个“操作”也是可行的;我相信它也避免了调用 echo 或任何其他子进程。 - Scott Stevens您可能想看看pr(1)
,它可以直接实现您想要的功能。
如果你想自己制作,请展开这个基于posix的shell脚本片段:
ls -1 | while read f; do cat "$f"; echo This is a spacer line; done > /tmp/outputfile
ls -1 | while read f; do
cat "$f"
echo This is a spacer line
done > /tmp/outputfile
对于 ls
命令,你实际上不需要使用 -1
参数。
ls
命令。只需使用 for f in *; do cat ...
即可。 (http://porkmail.org/era/unix/award.html#ls) - Jacktose我认为最简单的方法是使用 paste
命令:
paste $(ls *) > file.out
echo "" > blank.txt
cat f1.txt blank.txt f2.txt blank.txt f3.txt
处理目录中的所有文件(假设使用ksh Shell)
for file in * ; do
cat $file >> result.txt
echo "" >> result.txt
done
awk 'FNR==1{}{print}' file* > out.txt
对我来说效果更好。谢谢。 - rahul286