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