2016-08-30 7 views
-1

내가 반복하는 디렉토리의 파일에 grep을 사용하는 문자열이 포함될 때마다 bash 스크립트에서 작업을 수행하려고합니다. 문제는 디렉토리에있는 파일의 하위 집합에 이름에 공백이 포함되어있는 경우에 발생합니다. 따라서, 나는 sed를 사용하여 장소에서 탈출 공간과 공간을 대체하기 위해 노력했다 :bash 스크립트의 이스케이프 공간

grep: /Users/me/Desktop/theDir/nameWith: No such file or directory

grep: spaces.txt: No such file or directory

내가 잘못 뭐하는 거지 :

if grep -c "main" ${source} | sed 's/ /\\ /g'; then 
    # do something 
fi 

그러나, 나는 여전히 오류가?

+0

'grep -c'는 공백이있는 출력에 아무 것도 인쇄하지 않습니다. 힌트 : 숫자입니다. 아마도'grep -l'을 의미했을 것입니다. – anishsane

+0

grep은 파일에''main "이 들어 있는지를 확인하기위한 조건 일뿐입니다. –

답변

4

당신은 파일의 이름이 grep'ed되고 인용한다 : $source 가정

if grep -c main "$source" ; then 
    # do something 
fi 

는 ... 파일의 이름입니다. $source이 디렉토리의 이름이라면, 내가하려는 일에 대해 더 많은 정보가 필요합니다.

+0

오, 이제 OP가'sed'로 무엇을하려하는지 알았습니다. D. 나는 OP가 실제로'sed'에 grep 출력물을 전달하려고한다고 생각했다. – anishsane

+0

@anishsane 나는 OP가 무엇을하려고하는지 아직도 100 % 확신하지는 않지만, 나는이 제안으로 시작해서 그것이 어떻게 진행되는지 알게되었다. :) – mwp

+1

예, 실제 문제를 정확하게 해석 한 것 같습니다. 나는이 대답이 OP 문제를 해결해야한다고 생각합니다. – anishsane