정규식 셸은 의미를 찾는 데 도움이 됩니다.

정규식 셸은 의미를 찾는 데 도움이 됩니다.

나는 bash로 시작하고 있으며 다음과 같은 표현 줄이 있습니다. 이것이 무엇을 의미하는지 모르겠습니다.

쉘 정규식에서 이 줄은 무엇을 의미합니까?

find . -name '*.sh' | sed 's#.*/##' | sed 's#\.sh##'

답변1

find문은 현재 디렉터리와 해당 하위 디렉터리에서 다음으로 끝나는 모든 파일을 검색 .sh하고 한 줄에 하나의 파일을 인쇄합니다.

연산자는 일치하는 부분 문자열을 다른 것으로 s바꿉니다 . sed구문은 s<delimiter>regex<delimiter>replacement<delimiter>일반적 으로 다음 /과 같이 사용됩니다 .구분 기호하지만 #여기서는 사용됩니다.

이것대안두 문 모두에 sed빈 문자열이 있습니다 .

/따라서 첫 번째 문은 파일 이름(즉, 하위 디렉터리)에서 마지막 문 앞의 모든 내용을 잘라냅니다 . 두 번째 문은 .sh파일 이름의 접미사를 자릅니다.

파일 a/subdir/hierarchy/my_script.sh은 으로 인쇄됩니다 my_script.

관련 정보