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