2017-09-26 2 views
1

스크립트에서이 명령을 실행하려고하는데 정규 표현식의 값과 일치하지 않는 것으로 보입니다.Regex가 파일 이름을 대체하지 않음

cat /config.yml_orig >> /build/Product*/config.yml 

그리고 디렉토리의 제품 번호는 내가 *로 대체했지만 명령 행에이에 대한 정규식과 일치하지 변경에 대한 유지

/build/Product*/config.yml: No such file or directory 

실패합니다.

명령이 정규식을 식별하지 못했을 때 해결 방법은 무엇입니까?

+1

셸에서는 정규식이 아닌 와일드 카드 (일명 "globs")를 사용합니다. – Barmar

+0

'/ build/Product *'와 일치하는 디렉토리가 여러개있을 수 있습니까? 그렇다면 패턴과 일치하는 디렉토리가 여러 개인 경우 전략과 현재 답변이 재미 있고 흥미로운 방법으로 중단됩니다. –

답변

1

와일드 카드는 기존 파일과 만 일치하므로 파일을 만드는 경우에는 와일드 카드를 사용할 수 없습니다. 그런 다음 파일 이름을 추가, 와일드 카드와 별도로 디렉토리를 얻을 필요가 : 패턴이 전체를 일치하도록 노력하고있다

dir=$(echo /build/Product*) 
cat config.yml_orig >> "$dir"/config.yml 
0

을하고 "config.yml"파일이 존재하지 않는 경우는 실패입니다. 시도 :

cat config.yml_orig >> "$(echo /build/Product*)"/config.yml 
관련 문제