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

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

여기 초보자입니다. 폴더의 각 파일에 대해 다음 순서로 대체할 bash 스크립트를 프로그래밍하려고 합니다. [tr][tr]{X}여기서 X는 10진수(숫자 및 "." 모음)를 [tr][tr]{\tinyX}.

어떤 아이디어가 있나요?

감사해요

답변1

GNU에 접근할 수 없다면 ( GNU가 실제로 빌린) sed다음을 사용할 수도 있습니다 :perl-ised

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

답변2

sed전역 교체 패턴을 사용하는 GNU에서는 다음과 같습니다 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

관련 정보