중첩된 디렉터리 명령이 있으면 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
패턴을 보호하지 않으면 쉘이 와일드카드를 확장하기 때문입니다.
항상 따옴표를 사용해야 합니다.