膨大な数 (>10k) のテキスト ファイルにヘッダー (1 行) を追加する必要があります。変数 $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-cycle を使用したくありません (tee(1) は一度に多くのファイルを書き込むことができます)。
私の質問:
- 一度に両方の種類のデータ ファイル (空/非空) に対する 1 つのソリューションが存在しますか?
- そうでない場合: 空のファイルを効果的に管理するには?