

あるフォルダ以下に今まで作成したバッチやシェルスクリプトを保管しています。  
作成した時期や人によってファイル先頭行の記載が異なっており  
これの修正を自動化したいです。

例えば @echo off が抜けているものを列挙して追記する、  
Shebangを #! /bin/bash に統一したい など

Windows，Linuxでそれぞれどのように検索・追記するスクリプトを作成すれば良いか  
アドバイスをお願い致します。


CC BY-SA 3.0
2017-05-18T04:24:06.123
34799
2019-01-22T09:02:35.527
23156
question
shellscript batch-file
特定の文字を含まないファイルを検索して追記したい


バッチファイルを検索して `@echo off` が抜けている場合は先頭に追記する：

[code]

    for /f %%f in ('grep -iL "@echo off" *.bat') do (
      sed -i.bak "1i @echo off" %%f
    )
    
[/code]

* * *

`#!/bin/sh` を `#!/bin/bash` に置き換えて保存する：

[code]

    $ sed -i.bak 's/#!\/bin\/sh/#!\/bin\/bash/' /path/to/*.sh
    
[/code]

※ GNU sed を想定。念のため `-i[SUFFIX]` オプションで上書き保存時に `FILENAME.bak`
というバックアップを残すようにしています。

また Windows には `grep` `sed` コマンドがないため、事前に [Git for Windows](https://git-
scm.com/) や [MSYS2](http://www.msys2.org/) 等のコマンドラインツールをインストールする必要があります。


CC BY-SA 3.0
2017-05-18T19:02:05.217
34821
2017-05-18T19:02:05.217
2391
34799
answer