REGEX를 사용하여 슬래시를 제거하는 방법

REGEX를 사용하여 슬래시를 제거하는 방법

안녕하세요, 을(를) 삭제하려고 합니다 /. .sh현재 폴더에서 확장자를 가진 모든 파일을 찾은 다음 ./이름 앞과 뒤의 파일을 삭제하면 이 확장자가 있는 파일 .sh에 있어야 합니다. .sh나는 중간이라고 이름을 붙였다 find_sh.sh. 시도해 보았지만 find . -name '*.sh' -print | sed 's/[.]//g' | sed 's/[/]//g' | sed 's/.sh//g' 삭제됩니다 _. 내가 뭘 잘못하고 있는 걸까요?

답변1

나는 이것을 해왔고 작동 find . -name '*.sh' -print | sed 's/[.]//g' | sed 's/[/]//g' | sed 's/sh//'하고 작동합니다.

답변2

.리터럴 포인트뿐만 아니라 패턴의 모든 문자를 일치시킵니다. 이런 일이 발생하지 않도록 하려면 백슬래시를 사용하여 이스케이프 처리해야 합니다. 당신의기타 솔루션반면에 파일 이름에서 모든 점을 제거하면 a.b.sh다음 ab대안을 제안합니다.

find . -name '*.sh' | sed 's,^./,,g' | sed 's/.sh$//'

^어느 것이 줄의 시작 부분과 일치하고 $어느 것이 줄의 끝과 일치하는지 확인하세요 .

하지만 다음 명령 하나만 사용하는 것이 더 좋습니다 sed.

find . -name '*.sh' | sed 's,^./\(.*\).sh$,\1,'

관련 정보