ファイルの最初の行へのコマンドの出力

ファイルの最初の行へのコマンドの出力

コマンドの出力をファイルの最初の行に挿入しようとしています。

lsたとえば、「list.txt」という名前のファイルがあり、そのフォルダー内のすべてのファイル名を含むテキストを挿入したいとします。コマンドの出力を list.txt の最初の行に送る方法。

答え1

ほとんどの人は sed を検索および正規表現ベースの検索と置換のツールとして知っていますが、これは編集が可能な完全なエディターです。

次のようなコマンドを発行することができます。これは1 ilsコマンドの最初の行をファイル$(ls| head -1)に挿入します。list.txt所定の位置に-i)。

sed -i "1 i$(ls| head -1)" list.txt

答え2

ファイルの最初の行にリダイレクトするネイティブな方法はありませんが、一時ファイルを使用してこれを実現することはできます。たとえば、最初に出力を に追加しlist2.txt、次にlist.txtそれに cat して、出力全体を に書き戻しますlist.txt

ls > list2.txt
cat list.txt >> list2.txt
mv list2.txt list.txt

そうすれば、あなたが探しているものが見つかるはずです。

答え3

おそらく、これを実行するよりエレガントな方法がありますが、複数のファイルを使用することもできます。例:

ls | head -n 1 > temp-list.txt
cat list.txt >> temp-list.txt
mv temp-list.txt list.txt

関連情報