나는 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
.