フォルダ内のすべての.shファイルの最初の行を置き換える[閉じる]

フォルダ内のすべての.shファイルの最初の行を置き換える[閉じる]

現在のフォルダにあるすべての.shファイルのリストを作成します。このリストの各ファイルの最初の行を確認し、ファイルがで始まる場合#!/bin/shに置き換えます#!/bin/bash。を含むファイルのみを変更し、#!/bin/shすべての.shファイルの最初の行をに置き換えないでください#!/bin/bash

また、起動順序のみを交換するだけです。ファイルがその間にある場合は、#!/bin/sh交換しないでください。 .shのサブフォルダから繰り返し検索する必要はなく、現在のフォルダのファイルから置き換えるだけです。

答え1

何千もの「.sh」ファイルがなく、「.sh」で終わるサブディレクトリがない場合は、次のものを使用できます。

gawk -i inplace 'NR==1 && $0=="#!/bin/sh" {$0="#!/bin/bash"} 1' *.sh

答え2

#!/bin/bash 

FILES=/home/prashanth/now/*.sh

for f in $FILES

do

   x=$(head -n 1 $f)
   y="#!/bin/sh"
   if [ $x == $y ];
   then
       sed -i.bak '1 s/sh/bash/' $f 
   fi
done

関連情報