我在一个目录中递归地将文件组合在一起,但是,有些文件在最后一行之后缺少换行符,所以这会产生问题。
如何在过程中为每个文件添加换行符?这是shell脚本
查找 $1 -type f |xargs cat > test.csv
我意识到这是一个相当老的问题,但我遇到了同样的问题。由于使用了反引号和 /usr/bin/find,上述答案似乎都不适用于其中包含空格的文件。这样做需要我更改 $IFS ,除非您只需要使用文件,否则这是绝对没有必要的。
这是我的看法:
for i in *; do cat "$i" && echo ""; done
您可以使用循环:
find $1 -type f | while IFS= read -r file
do
cat "$file"
echo
done > test.csv
如果您想为最后一行本身没有换行符的任何文件添加换行符,您可以执行以下操作:
for f in `find $1 -type f`; do sed -E '$s/(.*\S+.*)/\1\n/' $f; done
编辑:我的第一个答案使用了 xargs,但这并没有提供预期的结果,所以回到了循环中。
使用 for 循环:
for file in $(find .); do cat $file >> huge_file; echo " " >> huge_file; done
find $1 -type f |xargs awk 'FNR==1 && NR>1 {print ""} {print}'
或者
find $1 -type f |xargs awk 'ENDFILE {print ""} {print}'