bash의 긴 파일 목록에서 [tr][tr]{X}를 [tr][tr]{\tinyX}로 변경하시겠습니까?

bash의 긴 파일 목록에서 [tr][tr]{X}를 [tr][tr]{\tinyX}로 변경하시겠습니까?

여기 초보자입니다. 폴더의 모든 파일에 대해 다음 순서를 대체할 bash 스크립트를 작성하려고 합니다. [tr][tr]{X}여기서 X는 소수(숫자 집합 및 "."), 여기서 ” 컬렉션)입니다 [tr][tr]{\tinyX}.

어떤 아이디어가 있나요?

감사해요

답변1

GNU에 액세스할 수 없다면 sed다음을 사용할 수도 있습니다 perl(실제로는 -iGNU 에서 빌려옴 sed).

find . -type f -exec perl -Tpi -e 's/\Q[tr][tr]{\E\K[\d.]+\}/\\tiny$&/g' {} +

답변2

GNU는 sed전역 대체 모드를 사용합니다 s/regexp/replacement/g.

sed -i'' 's/\(\[tr\]\[tr\]{\)\([0-9.]\+}\)/\1\\tiny\2/g' /path/to/folder/*

이는 한 세트의 문자열을 캡처 [tr][tr]{하고 X하나 이상의 숫자 또는 ( 대괄호 안의 문자와 한 번 이상 일치하는 대괄호 표현식)을 포함 .하고 두 번째 세트로 끝나고 일치하는 부분을 첫 번째 세트로 대체합니다 . 두 번째 그룹 라인. 그룹 대괄호, 리터럴 대괄호 및 리터럴 백슬래시는 다른 백슬래시를 사용하여 이스케이프해야 합니다.[0-9.]\+\+}\tiny()[]+\

이 프로그램을 실행하기 전에 데이터 폴더를 반드시 백업하십시오(또는 원본 파일을 로 두는 -i.back대신 사용하십시오 ).-i''filename.back

관련 정보