폴더에 있는 모든 .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

관련 정보