find 명령의 \*.xml과 *.xml의 차이점

find 명령의 \*.xml과 *.xml의 차이점

Linux/mac의 find 명령 \*.xml과 차이점은 무엇입니까*.xml

결과:

find . -name \*.xml and find . -name *.xml다르다. 그런데 왜?

또한, locate '*.xml'찾는 것보다 낫나요? 가장 일반적으로 사용되는 것은 무엇입니까?

답변1

find별표를 이스케이프하면 일치하는 리터럴 문자열이 제공되며 *.xml, 이를 쉘에 관계없이 내부적으로 와일드카드로 구문 분석할 수 있습니다. 별표를 이스케이프하거나 인용하지 않으면 find명령이 전혀 닿기 전에 셸에 의해 확장됩니다 .

somefile.xml예를 들어, 디렉토리에 파일이 하나만 있는 경우 쉘은 와일드카드를 확장하고 리터럴 문자열을 somefile.xml명령에 전달합니다. 즉:

sh-4.1$ find . -name *.xml

다음과 정확히 동일합니다.

sh-4.1$ find . -name somefile.xml

이는 정확한 파일 이름과만 일치합니다. 디렉토리에 *.xml와일드카드와 일치하는 두 개의 파일이 있는 경우 와일드카드를 확장하면 구문 오류가 발생할 수 있습니다.

sh-4.1$ find . -name somefile.xml someotherfile.xml
find: paths must precede expression: someotherfile.xml
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

더 나은지 아닌지는 locate실제로 사용하는 용도에 따라 다릅니다. 훨씬 빠르지 만 locate사전 구축된 인덱스에 의존하므로 최신 인덱스 업데이트만큼만 좋습니다(보통 매일 수행되지만 배포판에 따라 다릅니다). 또한 파일 이름 일치를 기반으로 한 결과만 반환하는 반면, find검색을 세분화할 수 있는 다양한 옵션을 허용합니다.

관련 정보