cat文件与shell脚本中的新行一起使用

时间:2011-09-13 07:58:43

标签: shell cat

我在一个目录中递归地同步文件,但是,有些文件在最后一行之后缺少换行符,因此这会产生问题。
如何在流程中为每个文件添加换行符?这是shellcript


    find $1 -type f |xargs cat  > test.csv

5 个答案:

答案 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,但是没有提供预期的结果,所以又回到了循环中。