답변:
문제는 -name
매개 변수를 인용하지 않았다는 것 입니다. 대신이 작업을 수행하십시오.
find . -name '*.java'
설명
따옴표가 없으면 쉘 *.java
은 glob 패턴으로 해석 하여에 전달하기 전에 glob와 일치하는 파일 이름으로 확장합니다 find
. 이 방법은 당신이 있던 경우에, 말하자면, foo.java
현재 디렉토리에서 find
의 실제 명령 줄은 다음과 같습니다
find . -name foo.java
이것은 분명히 현재 디렉토리에만 파일을 나열합니다 (트리에 더 비슷한 이름의 파일이 더 없다면).
인용은 glob 확장을 방지하고 명령 행을 find
그대로 전달합니다 .
또한, glob가 일치하지 않으면 ( *.java
현재 디렉토리에 파일이 없는 경우 ), 일치하지 않는 glob를 처리하도록 쉘이 설정되는 방식에 따라 두 가지 동작 중 하나가 발생합니다 ( nullglob
Bash 의 옵션에 의해 관리 됨). 예를 들어) :
find
(실수로 당신을 염두에 두어야합니다) 올바른 동작을 나타냅니다.find
되면에 대한 인수가 누락되었다고 불평합니다 -name
.