답변:
직접적인 동등한 것은
find . -iname <filename>
<filename>
현재 디렉토리에서 호출 된 모든 파일과 디렉토리 및 대소 문자를 무시하고 하위 디렉토리 가 나열됩니다 .
find 버전이 지원하지 않는 -iname
경우 -name
대신 사용할 수 있습니다 . 달리주의 -iname
, -name
대소 문자를 구분합니다.
<filename>
디렉토리가 아닌 이라는 파일 만 나열하려면 다음을 추가하십시오.-type f
find . -iname <filename> -type f
와일드 카드를 사용하려면 따옴표로 묶어야합니다. 예 :
find . -iname "*.txt" -type f
그렇지 않으면 쉘이 확장합니다.
다른 사람들이 지적했듯이 다음을 수행 할 수도 있습니다.
find . | grep "\.txt$"
grep
와일드 카드보다 강력하지만 구문이 다른 정규식을 기반으로 행을 인쇄합니다.
참조 man find
및 man grep
자세한 내용은.
<filename>
위한 마커로 사용 하는 것은 < and >
대부분의 시간이 특정한 의미를 갖는 명령 행 환경에서 나쁜 습관입니다 . filename
FILENAME을 사용하여 강조하는 것이 좋습니다 . 대부분의 사람들은 이해할 것이며, 그렇지 않은 사람들은 자신보다 적거나 큰 부호를 명중하지 않아야한다는 것을 이해하지 못할 때 해를 입힐 수 있습니다.
<filename>
는 많은 UNIX 문서에서 사용되는 규칙이므로 사람들이 알고있는 것이 유용하다고 생각하지만 FILENAME
이해하기가 더 쉽다 는 데 동의합니다 .
find -iname <filename>
이 DOS와 같은 대소 문자를 구분하기 때문에 더
일부 쉘은을 허용하는데 ls **/filename
, 이는 매우 편리합니다.
shopt -s globstar; echo **/filename
은에 해당합니다 find . -name "filename"
. zsh에서도 작동합니다.
shopt -s globstar
, 아마 당신을 위해 일할 것입니다. 재귀 globbing은 일부 셸에서만 사용할 수있는 기능이며 때로는 기본적으로 설정되어 있지 않습니다.
shopt
명령은 옵션을 활성화합니다 globstar on
. 이제는 매력처럼 작동합니다. 고마워
당신은 이것을 할 수 있습니다
find . | egrep filename
find . -regextype posix-egrep -regex '.*filename.*'
합니다 (만약 내가 모르는 egrep
부분이 중요하지만, 당신이 사용 egrep
나는 그것을 포함 귀하의 대답)
grep
DOS 명령은 쉘 와일드 카드를 사용하는 반면 정규식을 사용합니다.
find . -name "*.*"
DOS 배경에서 기대하는 것을 수행하지 않습니다. 글로브는 알아볼 수있을만큼 가까이 있지만 정규식은 완전히 새로운 짐승입니다.
*.*.*
즉 창 cmd를 현대 도스에서 무엇입니까? 무엇에 대해 *.*.*.*
?
<filename>
와일드 카드가 포함 된 경우 따옴표를 사용하십시오 (예 :)find . -name '*.txt'
.