c:\를 찾는 방법

c:\를 찾는 방법

저는 cygwin의 grep을 사용하여 C 드라이브에 하드코딩된 경로의 모든 인스턴스를 찾습니다. 행위:

grep -r "c:\\" .

주어진grep: trailing backslash

내가 어떻게 할 수 있는지 아는 사람 있나요?

답변1

오류는 큰따옴표( )를 사용했기 때문에 발생합니다 ". 이를 통해 내용이 도착하기 전에 쉘이 내용을 해석할 수 있습니다 grep.

시도 grep -r 'c:\\' .해봐.

echo 'c:\' > test
ire@localhost$ cat test
c:\
ire@localhost$ grep -r 'c:\\' test
c:\

설명하다: \shell과 grep에 특별한 의미가 있습니다. 다음 문자를 문자 그대로 해석할 수 있도록 이스케이프 문자로 사용됩니다.

이렇게 하면 grep "c:\\"셸은 콘텐츠를 가져와서 리터럴 문자열로 변환 c:\하고 에 전달합니다 grep. grep단일 백슬래시가 표시되고 이스케이프 문자로 해석됩니다. 하지만 따라가거나 \도망칠 캐릭터는 없습니다! 그러므로 불평하는 것이 합리적입니다.

'셸에서 내용을 보호하려면 작은따옴표( )를 사용하세요 . 하지만 여전히 두 개의 슬래시가 필요합니다. 왜냐하면 grep이것이 찾고 있는 문자 그대로의 백슬래시임을 알려야 하기 때문입니다 .

또는 다음을 수행할 수 있습니다.

grep -rF 'C:\' .

또는

grep -rF "C:\\" .

grep 옵션 -F(이전에는 fgrep명령이라고 함)은 grep다음을 찾도록 지시합니다.고정 문자열이므로 이스케이프할 항목이 없으며 백슬래시는 특별하지 않습니다 grep(그러나 큰따옴표 안의 쉘에는 여전히 적용됩니다).

답변2

또는 직접 사용하십시오 "c:/"(Windows에서도 사용 가능).

관련 정보