Linux 파일 검색

LinuxBeginner
지금 연습하기

소개

이 랩에서는 강력한 find 명령어를 사용하여 Linux 시스템에서 파일을 효과적으로 검색하는 방법을 배우게 됩니다. find 명령어는 이름, 크기, 수정 시간 등 다양한 기준에 따라 파일과 디렉토리를 검색할 수 있는 다재다능한 도구입니다.

이 랩을 마치면 다음을 수행할 수 있습니다.

  • find 명령어의 기본 구문 사용
  • 특정 이름으로 파일 검색
  • 파일 크기를 기준으로 파일 찾기
  • 여러 검색 기준 결합

이러한 기술은 파일 시스템 내에서 파일을 효율적으로 찾아야 하는 시스템 관리자, 개발자 및 Linux 시스템을 사용하는 모든 사람에게 필수적입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 91%입니다.학습자들로부터 97%의 긍정적인 리뷰율을 받았습니다.

find 명령어 기본 탐색

find 명령어는 Linux 에서 지정된 위치 내에서 파일과 디렉토리를 검색하는 데 도움이 되는 강력한 도구입니다. find 명령어의 기본 구문은 다음과 같습니다.

find [starting-point] [options] [expression]

여기서:

  • [starting-point]find가 검색을 시작해야 하는 디렉토리입니다.
  • [options]는 검색 수행 방식을 제어합니다.
  • [expression]은 파일을 선택하기 위한 기준을 정의합니다.

실습을 위해 디렉토리 구조를 만들어 보겠습니다. 터미널을 열고 다음 명령을 실행합니다.

mkdir -p ~/project/files/{documents,images,music}
touch ~/project/files/documents/{report.txt,notes.txt,project.pdf}
touch ~/project/files/images/{photo1.jpg,photo2.jpg,diagram.png}
touch ~/project/files/music/{song1.mp3,song2.mp3}

이러한 명령어는 여러 하위 디렉토리와 다양한 유형의 파일로 구성된 디렉토리 구조를 만듭니다.

이제 find 명령어를 사용하여 files 디렉토리의 모든 파일을 나열해 보겠습니다.

find ~/project/files -type f

다음과 유사한 출력을 볼 수 있습니다.

/home/labex/project/files/documents/report.txt
/home/labex/project/files/documents/notes.txt
/home/labex/project/files/documents/project.pdf
/home/labex/project/files/images/photo1.jpg
/home/labex/project/files/images/photo2.jpg
/home/labex/project/files/images/diagram.png
/home/labex/project/files/music/song1.mp3
/home/labex/project/files/music/song2.mp3

이 명령어에서:

  • ~/project/files는 검색을 시작할 위치를 지정합니다.
  • -type ffind에게 파일만 찾도록 지시합니다 (디렉토리가 아님).

find를 사용하여 디렉토리만 나열할 수도 있습니다.

find ~/project/files -type d

그러면 다음이 표시됩니다.

/home/labex/project/files
/home/labex/project/files/documents
/home/labex/project/files/images
/home/labex/project/files/music

-type d 옵션은 find에게 디렉토리만 찾도록 지시합니다.

이름으로 파일 찾기

find 명령어를 가장 많이 사용하는 경우 중 하나는 파일 이름을 기준으로 파일을 검색하는 것입니다. -name 옵션을 사용하면 파일 이름과 일치시킬 패턴을 지정할 수 있습니다.

files 디렉토리에서 모든 텍스트 파일을 찾고 싶다고 가정해 보겠습니다. 다음을 사용할 수 있습니다.

find ~/project/files -type f -name "*.txt"

이 명령어는 다음을 반환해야 합니다.

/home/labex/project/files/documents/report.txt
/home/labex/project/files/documents/notes.txt

이 명령어에서:

  • -name "*.txt"find에게 .txt로 끝나는 파일 이름과 일치하도록 지시합니다.
  • *는 임의의 수의 문자와 일치하는 와일드카드입니다.

-name 옵션은 대소문자를 구분합니다. 대소문자에 관계없이 파일을 검색하려면 -iname을 대신 사용하십시오.

find ~/project/files -type f -iname "*.TXT"

이렇게 하면 확장자를 대문자로 지정했음에도 불구하고 report.txtnotes.txt를 찾을 수 있습니다.

이제 특정 파일을 찾아보겠습니다. 고유한 이름으로 새 파일을 만들어 보겠습니다.

touch ~/project/files/documents/important_report.txt

이 특정 파일을 찾으려면:

find ~/project/files -type f -name "important_report.txt"

출력:

/home/labex/project/files/documents/important_report.txt

특정 하위 디렉토리에서 검색할 수도 있습니다. 예를 들어, images 디렉토리에서만 검색하려면 다음을 수행합니다.

find ~/project/files/images -type f -name "*.jpg"

출력:

/home/labex/project/files/images/photo1.jpg
/home/labex/project/files/images/photo2.jpg

이 명령어는 .jpg 확장자를 가진 파일에 대해 images 디렉토리 내에서만 검색합니다.

파일 크기로 찾기

find 명령어는 -size 옵션을 사용하여 파일 크기를 기준으로 파일을 검색할 수도 있습니다. 이는 디스크 공간을 많이 차지할 수 있는 큰 파일이나 비어 있을 수 있는 작은 파일을 찾아야 할 때 유용합니다.

먼저, -size 옵션의 구문을 이해해 보겠습니다.

-size n[cwbkMG]

여기서:

  • n은 숫자입니다.
  • 문자는 단위를 나타냅니다: c (바이트), w (2 바이트 단어), b (512 바이트 블록), k (킬로바이트), M (메가바이트), G (기가바이트)
  • n 앞에 +를 붙이면 "n 보다 큼"을 의미하고, -를 붙이면 "n 보다 작음"을 의미합니다.

파일에 내용을 추가하여 서로 다른 크기를 갖도록 하겠습니다.

echo "This is a short text file." > ~/project/files/documents/notes.txt
for i in {1..100}; do
  echo "This is line $i of the important report." >> ~/project/files/documents/important_report.txt
done

이제 100 바이트 미만의 파일을 찾아보겠습니다.

find ~/project/files -type f -size -100c

이것은 비어 있거나 거의 비어 있는 파일 중 일부를 포함할 수 있습니다.

1 킬로바이트보다 큰 파일을 찾으려면:

find ~/project/files -type f -size +1k

이것은 100 줄을 추가했기 때문에 important_report.txt 파일을 포함해야 합니다.

정확한 크기를 지정할 수도 있습니다. 정확히 50 바이트인 파일을 만들어 보겠습니다.

echo -n "This is exactly 50 bytes long........................." > ~/project/files/documents/exact_size.txt

이제 정확히 50 바이트인 파일을 찾습니다.

find ~/project/files -type f -size 50c

출력:

/home/labex/project/files/documents/exact_size.txt

파일 크기를 확인하려면 ls -l 명령어를 사용할 수 있습니다.

ls -l ~/project/files/documents/exact_size.txt

출력의 두 번째 열은 파일 크기를 바이트 단위로 표시하며, 이는 50 이어야 합니다.

여러 검색 조건 조합

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 \)

이 복잡한 명령어는 논리 연산자를 사용하여 여러 조건을 결합하여 정교한 검색 기준을 만드는 방법을 보여줍니다.

요약

이 Lab 에서는 Linux find 명령어를 사용하여 다양한 기준에 따라 파일을 효율적으로 검색하는 방법을 배웠습니다. 다음은 지금까지 배운 내용의 요약입니다.

  1. find 명령어의 기본 구문과 파일 및 디렉토리를 검색하는 방법을 배웠습니다.
  2. -name 옵션과 와일드카드 (wildcard) 를 사용하여 이름으로 파일을 찾는 방법을 익혔습니다.
  3. 다양한 단위를 사용하여 -size 옵션을 통해 파일 크기를 기준으로 파일을 검색하는 방법을 살펴보았습니다.
  4. 논리 연산자 (AND, OR, NOT) 를 사용하여 여러 검색 기준을 결합하여 복잡한 검색을 수행했습니다.

find 명령어는 파일을 찾는 데 사용할 수 있는 Linux 에서 가장 강력하고 유연한 도구 중 하나입니다. Linux 시스템으로 계속 작업하면서 파일 관리, 문제 해결 및 작업 자동화에 이러한 기술이 매우 유용하다는 것을 알게 될 것입니다.

기억해야 할 주요 사항:

  • 파일의 경우 -type f를 사용하고 디렉토리의 경우 -type d를 사용합니다.
  • 대소문자를 구분하는 파일 이름 검색에는 -name을 사용하고 대소문자를 구분하지 않는 검색에는 -iname을 사용합니다.
  • 크기별로 파일을 찾으려면 적절한 단위 (c, k, M, G) 와 함께 -size를 사용합니다.
  • 복잡한 검색 패턴을 만들려면 논리 연산자를 사용하여 기준을 결합합니다.

이러한 기술은 모든 Linux 환경에서 파일을 효율적으로 탐색하고 관리하는 데 도움이 될 것입니다.