ファイルの先頭にコマンドの出力結果を追加するには
ファイルの先頭に別のコマンド出力を追加
/tmp/foo
foo1 foo2 foo3
/tmp/bar
bar1 bar2 bar3
こういうファイルをくっつけるときは
cat foo bar
とするとできますが,コマンドの出力結果を貼り付けたい場合はどうしましょう?
別のファイルに書けばできますが,もっと短く書きたいですよね.
そこで,
ls -l | tac | xargs -I% sed -i 1i\ % foo
とかすると,
total 8 -rw-r--r-- 1 penguin penguin 15 Jul 24 07:08 bar -rw-r--r-- 1 penguin penguin 15 Jul 24 06:39 foo foo1 foo2 foo3
みたいに,コマンドの出力結果をfooの先頭に書くことができます.
解説とか
tacコマンドはcatの出力を逆順にするコマンドです.
a_command | xargs -I% another_command % arg2 arg3
みたいにすると,a_commandの出力結果がxargsに渡されますが,
その値が%に入って,変数のように扱うことができます.
すると,another_commandに渡す複数の引数の第一引数とかとして渡すことができます.