created: 2020-11-23T02:29:52.000Z

ファイル名をファイルの先頭に追加する(ディレクトリ配下全部)

1ファイルだけならいいが、何百とファイルがあると手作業でやるのはかなり辛い。 今回はブログ記事のファイル全部にフロントマターに1項目追加したかったので、1コマンドこさえた。

こんなコマンドでできる

$ ls -1 | xargs -I{} gsed -i -e '1i {}' {}

ls

ls -1

ファイル名を一覧するのに使う

xargs

xargs -I{}

  • パイプされた1行に対して同じコマンドを発行する
  • ファイル名のリストがパイプされているので、1ファイル1コマンド発行される
  • {} はプレースホルダ
    • {} がパイプされた1行に置換されてコマンドが実行される

gsed

macOSでLinux版のsedを使いたかったのでgsed。

gsedはbrewでインストールできる。

-i

ファイルを直接書き換えるという指示。 引数に文字列を渡すとその名前のファイルを生成する。

1i

1i ~~ で「1行目に~~という文字列を入れる」という指示になる。 この改行も一緒に入る。

参考

ダークナイト [Blu-ray]
[ad] ダークナイト [Blu-ray]
出演 クリスチャン・ベール, マイケル・ケイン (Blu-ray)