찾기 명령: 대소문자를 무시하는 방법은 무엇입니까?

찾기 명령: 대소문자를 무시하는 방법은 무엇입니까?

나는 거대한 디렉토리 계층 구조에서 "WSFY321.c" 파일을 찾고 있습니다.
보통 나는GNU 찾기: find . -name "WSFY321.c"
하지만 대소문자는 모르겠습니다. 대문자일 수도 있고, 소문자일 수도 있고, 둘이 혼합되어 있을 수도 있습니다.

이 파일을 찾는 가장 쉬운 방법은 무엇입니까?
그것보다 더 좋은 것이 있나요 find . | grep -i "WSFY321.c"?

답변1

최신 버전의 GNU에는 대소문자를 구분하지 않는 이름 검색을 위한 플래그가 find있습니다 .-iname

find . -iname "WSFY321.c"

답변2

이 기능과 함께 GNU find 또는 다른 버전의 find를 사용하십시오.

find . -iname 'WSFY321.c'

다른 버전의 경우:

find . -name '[Ww][Ss][Ff][Yy]321.[Cc]'

또는 느리지만 입력하기 쉬운 절충안입니다.

find . -name '????321.c' | grep -i '/WSFY[^/]*$'

또는 zsh에서:

print -rl -- **/(#i)WSFY321.c

답변3

macOS를 위한 두 가지 솔루션:

GNU 사용 find:

brew install findutils --with-default-names
# restart Terminal
find . -iname 'WSFY321.c'

GNU 사용 sed:

brew install gnu-sed --default-names
# restart Terminal
find -name "$(sed 's|\([[:alpha:]]\)|[\U\1\L\1]|g' <<<'WSFY321.c')"

관련 정보