모든 파일과 모든 디렉터리에서 찾아서 바꿀 텍스트

모든 파일과 모든 디렉터리에서 찾아서 바꿀 텍스트

의 모든 항목을 바꾸고 싶습니다 1800 102 6022. 1860 266 2666.1800 102 6022

나는 다음을 사용하고 있습니다 :

perl -pi.13.04.2016 -w -e "s/\b1800 102 6022\b/1860 266 2666/g;" /*.jsp 

단일 폴더에서 작동합니다. 상위 디렉토리에서 실행하고 모든 파일에 적용하고 싶습니다.

답변1

이를 수행하려면 find 명령을 사용하십시오.

find /xxx -name '*.jsp' -exec perl -pi.13.04.2016 -w -e "s/\b1800 102 6022\b/1860 266 2666/g;" {} \;

답변2

이를 수행하는 방법에는 여러 가지가 있습니다.

  1. 사용 find:

    find . -type f -name "*.jsp" \ 
      -exec perl -pi.13.04.2016 -w -e "s/\b1800 102 6022\b/1860 266 2666/g;" {} \;
    
  2. 을 사용하는 경우 bash다음을 사용하세요 extglob.

    shopt -s globstar 
    perl -pi.13.04.2016 -w -e "s/\b1800 102 6022\b/1860 266 2666/g;" **/*jsp
    
  3. 디렉터리의 파일을 반복하면서 모든 작업을 Perl에서 수행할 수 있지만 여기서는 실제로 노력할 가치가 없습니다.

관련 정보