我需要將標題(單行)添加到巨大(> 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
由於空文件上面的命令不起作用量。發球區(1)不能寫入無限數量的文件。也可以超過 命令行參數的編號。
由於低性能,我不想使用for-cycle(tee(1)可以一次寫入多個文件)。
我的問題:
- 確實存在兩種類型的數據文件(空/非空)一次一個解決方案嗎?
- 如果不是:如何有效地管理空文件?
+1您還可以通過使用'echo'$ HEADER'來避免使用'header'臨時文件。貓 {};而不是> tmp'。 – chepner 2013-05-14 13:54:48
好點 - 更新。你學習每一天:) – rzymek 2013-05-14 14:16:34
呃。這分叉了三倍的文件數量(sh,cat,mv)! – Jens 2013-05-14 21:17:39