現在のフォルダにあるすべての.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