名前を次に切り替えて、複数の.csvファイルに.csvヘッダーを同時に含める必要があります。
元の名前1c.csv、元の名前2c.csv、元の名前3c.csv
現在のプロセスは次のとおりです。
cat header.csv originalname1.csv > originalname1c.csv
cat header.csv originalname2.csv > originalname2c.csv
cat header.csv originalname3.csv > originalname3c.csv
など。
上記の例のように、単一のコマンドで複数のファイルにヘッダーを追加できますか?
ボーナス1:ファイル名がランダムな場合はどうなりますか?ルールを維持する:anyname.csvからanynamec.csvまで
ベストアンサー1
for name in anyname*.csv; do
cat header.csv "$name" >"${name%.csv}c.csv"
done
以下は、anyname*.csv
.csvファイルの内容を追加したいCSVファイルの名前と一致するディレクトリパスを含めることができるいくつかのシェルパターンですheader.csv
。理想的には、このパターンは名前と一致しないでくださいheader.csv
。その場合は、別の場所に移動したり、名前を変更したり、スキップしたりする明示的なテストを挿入することを検討してください。
for name in anyname*.csv; do
[ "${name##*/}" = header.csv ] && continue
cat header.csv "$name" >"${name%.csv}c.csv"
done
または、bash
またはzsh
シェルから
for name in anyname*.csv; do
[ "$name" -ef header.csv ] && continue
cat header.csv "$name" >"${name%.csv}c.csv"
done
(または単に無視してheaderc.csv
生成される可能性のあるファイルを削除してください。)
ループは一致する名前を繰り返し、ヘッダーをCSVレコードに関連付けることで、元の名前と同じ名前ですが、ファイル名の.csv
サフィックスがありますc.csv
。
標準拡張子${var%pattern}
はに拡張されますが、$var
一致する最短のサフィックス文字列は削除されますpattern
。拡張${var##pattern}
も標準で、一致する最も長いプレフィックス文字列を削除します$var
。上記の例では、これを削除するために使用します$name
。