我需要将标题(单行)添加到大量(> 10k)文本文件中。假设变量 $HEADER 确实包含适当的标题。命令
find -type f -name 'tdgen_2012_??_??_????.csv' | xargs sed -i "1s/^/$HEADER\n/"
效果很好。我面临的问题是某些数据文件(tdgen_2012_?? ?? ????.csv)是空的。sed(1) 无法处理文件中不存在的行。我决定以单独的方式管理空文件:
echo $HEADER | tee $(find -type f -name 'tdgen_2012_??_??_????.csv' -empty) > /dev/null
由于空文件的数量,上面的命令不起作用。tee(1) 无法写入无限数量的文件。也可以超过命令行参数的数量。
由于性能低下,我不想使用 for 循环(tee(1) 可以一次写入多个文件)。
我的问题:
- 是否同时存在两种数据文件(空/非空)的解决方案?
- 如果没有:如何有效管理空文件?