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]*'
즉, x
like 문자를 or 와 일치하는 괄호 표현식으로 대체하여 대소문자를 구분하는 소문자 일치를 대소문자를 구분하지 않는 일치로 효과적으로 대체합니다.[xX]
x
X
x
x
ffi
단일 문자가 아닌 대문자 또는 소문자 번역 과 같은 일부 문자의 경우 다음 방법을 사용해야 할 수도 있습니다.
find "$file_dir1" "$file_dir2" \
\( -name '*[sS][uU]ffi[xX]' -o -name '*[sS][uU]FFI[xX]' \)
또는 대신에 , 또는 과 [ffiFFI]
일치합니다 .ffi
F
I
ffi
FFI
파일 및 디렉터리 이름에 개행 문자가 포함되지 않는다고 보장할 수 있는 경우 find
각 파일 경로를 인쇄하고 awk
파일 이름별로 필터링할 수도 있습니다.
find "$file_dir1" "$file_dir2" |
awk -F/ 'tolower($NF) ~ /^searchpattern/'
toupper($NF) ~ /^SEARCHPATTERN/
(위 의 내용과 반드시 동일하지는 않습니다 ffi
. 또는 모든 로케일의 모든 사람이 문자의 대문자 또는 소문자 변형(예: 대문자 i
I
또는 İ
?)에 동의하지 않기 때문입니다. 또한 그렇지 않은 것을 찾을 수도 있습니다. 대소문자 grep -i
를 구분하는 일치 도구 또는 기타 도구).