여러 검색 조건 조합
find 명령어는 여러 검색 기준을 결합할 때 더욱 강력해집니다. 논리 연산자를 사용하여 복잡한 검색 패턴을 만들 수 있습니다.
AND 논리 사용
기본적으로 여러 기준을 지정하면 find는 AND 논리를 사용합니다. 즉, 모든 조건이 참이어야 합니다. 예를 들어, 100 바이트보다 큰 모든 텍스트 파일을 찾으려면:
find ~/project/files -type f -name "*.txt" -size +100c
이 명령어는 텍스트 파일이면서 100 바이트보다 큰 파일을 찾습니다.
-o 를 사용한 OR 논리 사용
OR 논리를 사용하려면 -o 옵션을 사용할 수 있습니다. 예를 들어, 텍스트 파일 또는 PDF 파일을 찾으려면:
find ~/project/files -type f \( -name "*.txt" -o -name "*.pdf" \)
백슬래시로 이스케이프 처리해야 하는 괄호 사용에 유의하십시오. 이 명령어는 두 조건 중 하나에 일치하는 파일을 찾습니다.
출력에는 다음이 포함되어야 합니다.
/home/labex/project/files/documents/report.txt
/home/labex/project/files/documents/notes.txt
/home/labex/project/files/documents/important_report.txt
/home/labex/project/files/documents/exact_size.txt
/home/labex/project/files/documents/project.pdf
! 를 사용한 NOT 논리 사용
조건을 부정하려면 ! 연산자를 사용합니다. 예를 들어, 텍스트 파일이 아닌 모든 파일을 찾으려면:
find ~/project/files -type f ! -name "*.txt"
이 명령어는 .txt 확장자가 없는 모든 파일을 찾습니다.
복잡한 예시
좀 더 복잡한 조합을 시도해 보겠습니다. 예를 들어, 다음 조건을 모두 충족하는 파일을 찾으려면:
- JPG 또는 PNG 이미지이면서
- 0 바이트보다 큼
find ~/project/files -type f \( -name "*.jpg" -o -name "*.png" \) -size +0c
documents 디렉토리에서 PDF 파일이 아닌 모든 파일을 찾으려면:
find ~/project/files/documents -type f ! -name "*.pdf"
좀 더 복잡한 검색을 시연하기 위해 몇 가지 추가 파일을 만들어 보겠습니다.
## Create some large and small image files
echo "This is a large JPG file" > ~/project/files/images/large_image.jpg
for i in {1..50}; do
echo "Adding content to make this file larger." >> ~/project/files/images/large_image.jpg
done
touch ~/project/files/images/empty_image.png
이제 비어 있거나 1KB 보다 큰 모든 이미지 파일 (JPG 또는 PNG) 을 찾아보겠습니다.
find ~/project/files/images -type f \( -name "*.jpg" -o -name "*.png" \) \( -size 0 -o -size +1k \)
이 복잡한 명령어는 논리 연산자를 사용하여 여러 조건을 결합하여 정교한 검색 기준을 만드는 방법을 보여줍니다.