폴더 이름 site 아래에 약 50개의 HTML/js 파일이 있습니다.
일부 파일에는 다음이 포함됩니다(다음 줄은 파일에서 조합됨)
{"rendered":"http:\/\/localhost:4542\/?page_id=854"}
http:\/\/localhost:4542\/wp-content\/uploads\/2022\/09\/
src=\"http:\/\/localhost:4542\/wp-content\/uploads\/2022\/09\/B
http:\/\/localhost:4542\/wp-content\/uploads\/2022\/09\/A
replies":[{"embeddable":true,"href":"http:\/\/localhost:4542\/en\/wp-json
폴더의 모든 파일을 반복적으로 바꿀 수 있는 도구/명령이 있습니까 http:\/\/localhost:4542
?https:example.com
이제 macOS에서 작업 중입니다.
답변1
가지고 다닐 수 있는:
LC_ALL=C find . '(' -name '*.[Jj][Ss]' -o \
-name '*.[Hh][Tt][Mm][Ll]' -o \
-name '*.[Hh][Tt][Mm]' \
')' -exec perl -pi -e '
s{\Qhttp:\/\/localhost:4542\E}{https:example.com}g' {} +
대체할 파일이 전혀 없는 파일을 다시 작성하게 된다는 점에 유의하세요.
GNU grep
/ xargs
또는 호환 가능(여기서는 과도한 입력을 피하기 위해 중괄호 확장을 지원하는 셸)의 경우 다음을 통해 이를 피할 수 있습니다.
LC_ALL=C grep -r --include='*.'{'[jJ][sS]','[Hh][Tt][Mm]'{,'[Ll]'}} \
-Fl --null 'http:\/\/localhost:4542' . |
xargs -r0 perl -pi -e '
s{\Qhttp:\/\/localhost:4542\E}{https:example.com}g'
큰 피해 없이 제거할 수 있는 옵션(파일을 찾을 수 없는 경우 Perl 경고만 표시) 외에도 -r
GNU API의 대부분을 복사하는 Macos에서도 작동합니다.xargs
grep
grep
답변2
find
매개변수와 함께 명령을 사용해 볼 수 있습니다 -exec
.
find /path/to/folder -type f -regex '.*\.\(js\|html\)' -exec sed -i 's#http:\\/\\/localhost:4542#https:example.com#g' {} +
Mac OS에서는 비슷한 구문을 사용할 수 있습니다.
find /path/to/folder -E -type f -regex '.*\.(js|html)' -exec sed -i '.bak' 's#http:\\/\\/localhost:4542#https:example.com#g' {} +
정말 작동하길 바랍니다. 테스트할 Mac이 없지만 작동할 것입니다. Mac OS에서는 -i
이 옵션을 지정할 때 파일 확장자를 백업해야 합니다. ".bak" 대신 어떤 값이든 사용할 수 있습니다.
신용 거래:
find 명령을 사용하여 여러 확장자를 검색하는 방법,
노트:이 코드가 Mac OS에서 작동하는지 확실하지 않지만 다음과 같이 시도해 볼 수도 있습니다.
find /path/to/folder -iname "*.html" -o -iname "*.js" -exec sed -i 's#http:\\/\\/localhost:4542#https:example.com#g' {} +
답변3
특정 폴더(예:)에서 특정 유형(예:)의 모든 파일을 find
찾은 다음 다음 을 사용하여 명령에 공급할 수 있습니다 .*.txt
.
sed
xargs
find . -type f -name '*.txt' -print0 | xargs -0 sed -i 's/http:\\\/\\\/localhost:4542/https:example.com/g'
위의 슬래시가 이스케이프되어 있음을 참고하세요.