find 명령에서 따옴표의 차이점

find 명령에서 따옴표의 차이점

중첩된 디렉터리 명령이 있으면 find . -name "*.py" -print현재 디렉터리에 있는 모든 Python 스크립트를 가져옵니다. 그러나 find . -name *.py -print현재 디렉터리의 Python 스크립트만 반환됩니다.

이것이 예상되는 동작입니까? 이 차이의 원인은 무엇입니까? 저는 맥 OS X 10.7을 사용합니다.

답변1

이것은 동일한 명령이 아닐 수도 있습니다. echo앞에 놓고 확인하시면 됩니다 .

$ echo find . -name "*.py" -print
find . -name *.py -print

$ echo find . -name *.py -print
find . -name foobar.py barfoo.py -print

따옴표가 없으면 셸이 확장되므로 *.py다른 find인수를 얻게 되어 다른 결과가 생성됩니다.

*명령을 문자 그대로 읽으려면 항상 인용문을 사용해야 합니다 *. 그렇지 않으면 동작이 불규칙해집니다( *.py쉘이 확장할 파일이 없는 한 명령은 작동합니다).

답변2

패턴을 보호하지 않으면 쉘이 와일드카드를 확장하기 때문입니다.

항상 따옴표를 사용해야 합니다.

관련 정보