替换文件夹中所有 .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

相关内容