質問: あるフォルダ以下に今まで作成したバッチやシェルスクリプトを保管しています。 作成した時期や人によってファイル先頭行の記載が異なっており これの修正を自動化したいです。 例えば @echo off が抜けているものを列挙して追記する、 Shebangを #! /bin/bash に統一したい など Windows,Linuxでそれぞれどのように検索・追記するスクリプトを作成すれば良いか アドバイスをお願い致します。
回答: バッチファイルを検索して `@echo off` が抜けている場合は先頭に追記する: ``` for /f %%f in ('grep -iL "@echo off" *.bat') do ( sed -i.bak "1i @echo off" %%f ) ``` `#!/bin/sh` を `#!/bin/bash` に置き換えて保存する: ``` $ sed -i.bak 's/#!\/bin\/sh/#!\/bin\/bash/' /path/to/*.sh ``` ※ GNU sed を想定。念のため `-i[SUFFIX]` オプションで上書き保存時に `FILENAME.bak` というバックアップを残すようにしています。 また Windows には `grep` `sed` コマンドがないため、事前に Git for Windows や MSYS2 等のコマンドラインツールをインストールする必要があります。