ディレクトリ内のすべてのファイルの先頭に2行を追加しようとしています。
以下を使用して、単一のファイルに対してこれを実行できます。
echo -e "% First Line\n% "$(date)"\n\n$(cat file1.txt)">file1.txt
最初に2行を追加する方法みんなディレクトリにファイルがありますか?
答え1
まず、コマンドは次のようになります。
echo -e "% First Line\n% "$(date)"\n\n$(cat file1.txt)">file1.txt
これは強くお勧めしません。 ファイルにバックスラッシュが含まれていると問題が発生します。引用符とコマンドの置き換えをお読みください。
単一ファイルの場合、ファイルの先頭に行を挿入する推奨 POSIX 方法は次のとおりです。
printf '%s\n' 0a 'First line' '2nd line; 3rd line is empty' '' . x | ex file.txt
0a
「0行の後に追加」を意味します。これはex
POSIXファイルエディタ(他の形式のエディタでもあります)のコマンドですvi
。行.
自体の末尾に追加されます。 x
保存と終了。
複数のファイルを一度に処理するには、ループfor
とファイルグローブを使用してください。
for f in *.txt; do
printf '%s\n' 0a '# This line heads all files' . x | ex "$f"
done
答え2
sed
プラットフォームが以下を使用して内部編集をサポートしている場合
sed -i "1i\\
First line\\
$(date)" *
残念ながら、この部分はsed
少し薄暗いです。文書内の正確な構文を把握するのに苦労した記憶があります。
答え3
perl -i -lpe '
$FNR++ or print "% First Line\n%", `date`, $\;
$FNR = 0 if eof;
' *.txt
各ファイルの最初の入力行にのみ必要な文字列を印刷します。ステートメントが要求するように改行を追加しますORS
$\
。print
echo