찾기 명령에서 대소문자 무시

찾기 명령에서 대소문자 무시

find 명령을 사용하여 2개의 다른 디렉토리에 있는 파일을 검색하고 싶습니다.

find $file_dir1 $file_dir2  -name 'searchpattern*' | tail -10

지금 이 명령을 사용하고 있지만 대소문자를 구분하여 검색합니다. 나는 그것을 시도했지만 -iname내 리눅스 컴퓨터는 그것을 지원하지 않습니다. 대소문자를 무시하고 모든 파일을 나열해야 합니다.

답변1

find "$file_dir1" "$file_dir2" \
  -name '[sS][eE][aA][rR][cC][hH][pP][aA][tT][tT][eE][rR][nN]*'

즉, xlike 문자를 or 와 일치하는 괄호 표현식으로 대체하여 대소문자를 구분하는 소문자 일치를 대소문자를 구분하지 않는 일치로 효과적으로 대체합니다.[xX]xXxx

단일 문자가 아닌 대문자 또는 소문자 번역 과 같은 일부 문자의 경우 다음 방법을 사용해야 할 수도 있습니다.

find "$file_dir1" "$file_dir2" \
  \( -name '*[sS][uU]ffi[xX]' -o -name '*[sS][uU]FFI[xX]' \)

또는 대신에 , 또는 과 [ffiFFI]일치합니다 .FIFFI

파일 및 디렉터리 이름에 개행 문자가 포함되지 않는다고 보장할 수 있는 경우 find각 파일 경로를 인쇄하고 awk파일 이름별로 필터링할 수도 있습니다.

find "$file_dir1" "$file_dir2" |
  awk -F/ 'tolower($NF) ~ /^searchpattern/'

toupper($NF) ~ /^SEARCHPATTERN/(위 의 내용과 반드시 ​​동일하지는 않습니다 . 또는 모든 로케일의 모든 사람이 문자의 대문자 또는 소문자 변형(예: 대문자 i I또는 İ?)에 동의하지 않기 때문입니다. 또한 그렇지 않은 것을 찾을 수도 있습니다. 대소문자 grep -i를 구분하는 일치 도구 또는 기타 도구).

관련 정보