大量のファイルをファイル名そのままに一括で文字置換
コマンドラインで動かすプログラムをよく使うようになって数年経ちますが、 未だにunixコマンドを全然覚えていません、酷い。
この1年くらいでcshやらPythonやらで軽いコードを書く機会は増えたものの、 基本的は既存のプログラムに任せっきりで、コマンドを覚えるのは怠ってる。
知らない便利なコマンドはきっと沢山あって、覚えれば作業効率も段違いに上がるだろう予感はするんだけど。 必要に駆られないと存在自体に気付かないことが多い。
で、大量のテキストファイルを一括で文字置換して上書きしたいという状態に陥った。
sed
コマンドの存在は知っていたけど、今まではリダイレクトでファイル名を指定していたので、ファイル数が多いとめっちゃ嵩張った。あと作業的にファイル名変えたくない時もあるし。
んでググってみたら解決。-i
オプションなんてあったんですね。
sed "" -i 's/a/b/g' *.txt
これで同じディレクトリ内の全txtファイルのファイル名そのままでaをbに変換できる。