3

我在一个目录中递归地将文件组合在一起,但是,有些文件在最后一行之后缺少换行符,所以这会产生问题。
如何在过程中为每个文件添加换行符?这是shell脚本

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

4

5 回答 5

5

我意识到这是一个相当老的问题,但我遇到了同样的问题。由于使用了反引号和 /usr/bin/find,上述答案似乎都不适用于其中包含空格的文件。这样做需要我更改 $IFS ,除非您只需要使用文件,否则这是绝对没有必要的。

这是我的看法:

for i in *; do cat "$i" && echo ""; done
于 2012-04-24T09:05:44.160 回答
2

您可以使用循环:

find $1 -type f | while IFS= read -r file
do
    cat "$file"
    echo
done > test.csv
于 2011-09-13T08:11:01.557 回答
1

如果您想为最后一行本身没有换行符的任何文件添加换行符,您可以执行以下操作:

for f in `find $1 -type f`; do sed -E '$s/(.*\S+.*)/\1\n/' $f; done

编辑:我的第一个答案使用了 xargs,但这并没有提供预期的结果,所以回到了循环中。

于 2011-09-13T08:34:41.600 回答
1

使用 for 循环:

for file in $(find .); do cat $file >> huge_file; echo " " >> huge_file; done
于 2011-09-13T08:10:10.743 回答
1
find $1 -type f |xargs awk 'FNR==1 && NR>1 {print ""} {print}'

或者

find $1 -type f |xargs awk 'ENDFILE {print ""} {print}'
于 2011-09-13T08:14:09.240 回答