Linux에서 와일드카드를 사용하여 현재 및 하위 디렉터리에서 반복적으로 파일 찾기

Shell

Linux에서 효율적인 파일 검색

Linux로 작업할 때 디렉터리 전체에서 파일을 찾는 것은 일반적이고 때로는 복잡한 작업일 수 있습니다. 재귀적 검색 방법과 와일드카드 일치를 활용하면 이 프로세스를 크게 간소화할 수 있습니다. 이러한 도구는 초보자와 고급 사용자 모두에게 매우 중요하므로 파일 관리를 더욱 효율적으로 만들어줍니다.

이 가이드에서는 특정 와일드카드 패턴을 기반으로 현재 디렉터리와 해당 하위 디렉터리에서 모든 파일을 재귀적으로 찾는 방법을 살펴보겠습니다. 대규모 데이터 세트를 구성하든 단순히 몇 개의 파일을 찾으려고 하든 이러한 방법을 사용하면 명령줄 숙련도가 향상됩니다.

명령 설명
find 디렉터리 계층 구조 내에서 파일 및 디렉터리를 검색합니다.
-name 와일드카드 패턴을 사용하여 이름으로 파일을 일치시킵니다.
os.walk 하향식 또는 상향식을 통해 디렉터리 트리에 파일 이름을 생성합니다.
fnmatch.fnmatch 파일 이름이나 문자열이 와일드카드 패턴과 일치하는지 테스트합니다.
param PowerShell 스크립트 및 함수에 대한 매개변수를 정의합니다.
Get-ChildItem 하나 이상의 지정된 위치에서 항목을 검색합니다.
-Recurse 디렉토리를 통해 재귀적으로 검색하도록 명령에 지시합니다.
-Filter 와일드카드 표현식을 사용하여 항목을 필터링합니다.

재귀 파일 검색 스크립트에 대한 자세한 설명

첫 번째 스크립트는 셸 스크립트를 활용하여 주어진 와일드카드 패턴을 기반으로 현재 디렉터리와 하위 디렉터리에서 파일을 찾습니다. 스크립트의 인터프리터를 지정하기 위해 shebang으로 시작합니다. 그런 다음 스크립트는 if [ $# -eq 0 ]를 사용하여 사용자가 인수로 와일드카드 패턴을 제공했는지 확인합니다. 그렇지 않은 경우 사용자에게 올바른 사용법을 묻는 메시지를 표시하고 종료됩니다. 패턴이 제공되면 스크립트는 -type f 옵션과 함께 find 명령을 사용하여 파일을 검색하고 -name 옵션을 사용하여 와일드카드 패턴과 일치시킵니다. find 명령은 Unix 기반 시스템에서 반복적으로 파일을 검색하는 데 매우 효율적입니다. 스크립트는 exit 0으로 끝나서 성공적인 실행을 나타냅니다.

두 번째 스크립트는 와일드카드 패턴을 기반으로 재귀적으로 파일을 검색하는 Python 스크립트입니다. 먼저 운영 체제와 상호 작용하고 명령줄 인수를 처리하는 데 필요한 os 및 sys 모듈을 가져옵니다. 스크립트는 사용자가 와일드카드 패턴을 제공했는지 확인합니다. 그렇지 않은 경우 올바른 사용법을 인쇄하고 종료합니다. os.walk를 사용하면 스크립트가 디렉터리 트리를 탐색할 수 있습니다. 발견된 각 파일에 대해 fnmatch.fnmatch는 파일 이름이 와일드카드 패턴과 일치하는지 확인하여 일치하는 파일 경로를 인쇄합니다. 이 스크립트는 스크립팅을 위해 Python을 선호하고 코드에 더 많은 유연성과 가독성이 필요한 사용자에게 유용합니다.

세 번째 스크립트는 PowerShell을 사용하여 Windows 시스템에서 유사한 작업을 수행합니다. 스크립트는 param 문을 사용하여 와일드카드 패턴에 대한 매개변수를 정의합니다. 패턴이 제공되지 않으면 사용자에게 올바른 사용법을 묻는 메시지가 표시됩니다. -Recurse 플래그와 결합된 Get-ChildItem cmdlet은 지정된 위치에 있는 항목을 반복적으로 검색합니다. -Filter 매개변수는 특정 파일과 일치하도록 와일드카드 패턴을 적용합니다. 이 스크립트는 Windows 환경에서 작업하는 사용자에게 이상적이며 PowerShell의 강력하고 다양한 스크립팅 기능을 활용하여 파일을 효율적으로 관리하고 검색합니다.

찾기 명령을 사용한 재귀적 파일 검색

Linux의 쉘 스크립팅

#!/bin/bash
# Script to recursively find files based on wildcard matching

# Check if the user has provided a wildcard pattern
if [ $# -eq 0 ]
then
  echo "Usage: $0 <wildcard-pattern>"
  exit 1
fi

# Find and print the files matching the pattern
find . -type f -name "$1"

exit 0

재귀적 파일 검색을 위한 Python 스크립트

Python 스크립팅

import os
import sys

# Check if the user has provided a wildcard pattern
if len(sys.argv) != 2:
    print("Usage: python script.py <wildcard-pattern>")
    sys.exit(1)

# Get the wildcard pattern from the command line argument
pattern = sys.argv[1]

# Walk through the directory tree
for root, dirs, files in os.walk("."):
    for file in files:
        if fnmatch.fnmatch(file, pattern):
            print(os.path.join(root, file))

재귀적 파일 검색을 위한 PowerShell 스크립트

파워셸 스크립팅

# Check if the user has provided a wildcard pattern
param (
    [string]$pattern
)

if (-not $pattern) {
    Write-Host "Usage: .\script.ps1 -pattern '<wildcard-pattern>'"
    exit 1
}

# Get the files matching the pattern
Get-ChildItem -Recurse -File -Filter $pattern

재귀적 파일 검색을 위한 고급 기술

앞에서 설명한 기본 재귀 파일 검색 방법 외에도 Linux에서 파일 검색 기능을 향상시킬 수 있는 몇 가지 고급 기술이 있습니다. 그러한 방법 중 하나는 find와 함께 grep 명령을 사용하여 특정 텍스트 패턴이 포함된 파일을 검색하는 것입니다. 예를 들어 find 를 사용할 수 있습니다. -type f -name "*.txt" -exec grep "search_text" {} + "search_text" 문자열이 포함된 모든 텍스트 파일을 찾습니다. 이는 대용량 코드베이스나 로그 파일을 효율적으로 검색해야 하는 개발자와 시스템 관리자에게 특히 유용합니다.

재귀적 파일 검색을 위한 또 다른 강력한 도구는 find에 대한 간단하고 빠르며 사용자 친화적인 대안인 fd입니다. fd는 합리적인 기본값을 제공하며 직관적인 구문을 제공합니다. 예를 들어, fd "pattern" 명령은 패턴과 일치하는 파일을 재귀적으로 검색하며 기본적으로 정규식을 지원합니다. 또한 fd는 병렬화된 파일 시스템 탐색으로 인해 많은 시나리오에서 find보다 빠릅니다. 사용자 친화적인 인터페이스와 고급 검색 기능이 필요한 사용자에게는 fd가 탁월한 선택이 될 수 있습니다.

  1. 특정 확장자를 가진 파일을 반복적으로 검색하려면 어떻게 해야 합니까?
  2. find 명령을 사용하십시오. -type f -name "*.extension" 여기서 "extension"은 찾고 있는 파일 확장자입니다.
  3. 지난 7일 이내에 수정된 파일을 검색할 수 있나요?
  4. 예, find 명령을 사용하세요. -f -mtime -7을 입력하여 지난 7일 동안 수정된 파일을 찾습니다.
  5. 검색에서 특정 디렉토리를 어떻게 제외합니까?
  6. find와 함께 -prune 옵션을 사용하여 디렉토리를 제외합니다(예: find ). -path "./exclude_dir" -prune -o -type f -name "*.txt" -print.
  7. 파일 크기별로 검색이 가능한가요?
  8. 예, find 를 사용하세요. 100MB보다 큰 파일을 찾으려면 -f -size +100M을 입력하세요.
  9. 정규식과 일치하는 이름을 가진 파일을 어떻게 검색합니까?
  10. find 를 사용하세요. -type f -regex ".*pattern.*" 정규식과 일치하는 이름을 가진 파일을 검색합니다.
  11. 여러 검색 기준을 결합할 수 있나요?
  12. 예, find 옵션(예: find )을 사용하여 기준을 결합할 수 있습니다. -f -이름 "*.txt" 입력 -크기 +10M.
  13. 숨겨진 파일을 재귀적으로 검색하려면 어떻게 해야 합니까?
  14. find 를 사용하세요. -f -name ".*"를 입력하여 숨겨진 파일을 검색합니다.
  15. 디렉토리만 나열하는 방법이 있나요?
  16. 예, find 를 사용하세요. -d를 입력하면 모든 디렉터리를 재귀적으로 나열합니다.
  17. 발견된 파일 수를 어떻게 계산할 수 있나요?
  18. |추가 wc -l을 find 명령으로 변경합니다(예: find ). -유형 f -이름 "*.txt" | 화장실 -l.
  19. 검색 깊이를 제한할 수 있나요?
  20. 예, -maxlength 옵션을 사용하세요(예: find ). -max깊이 2 -f를 입력하여 검색을 2단계 깊이로 제한합니다.

재귀적 파일 검색을 위한 고급 기술

앞에서 설명한 기본 재귀 파일 검색 방법 외에도 Linux에서 파일 검색 기능을 향상시킬 수 있는 몇 가지 고급 기술이 있습니다. 그러한 방법 중 하나는 다음을 사용하는 것입니다. 와 조합하여 명령 특정 텍스트 패턴이 포함된 파일을 검색합니다. 예를 들어 다음을 사용할 수 있습니다. "search_text"라는 문자열이 포함된 모든 텍스트 파일을 찾습니다. 이는 대용량 코드베이스나 로그 파일을 효율적으로 검색해야 하는 개발자와 시스템 관리자에게 특히 유용합니다.

재귀적 파일 검색을 위한 또 다른 강력한 도구는 다음과 같습니다. , 간단하고 빠르며 사용자 친화적인 대안 . 합리적인 기본값이 제공되며 직관적인 구문을 제공합니다. 예를 들어, 다음 명령은 fd "pattern" 패턴과 일치하는 파일을 재귀적으로 검색하며 기본적으로 정규식을 지원합니다. 추가적으로, 보다 빠르다 병렬화된 파일 시스템 탐색으로 인해 많은 시나리오에서 발생합니다. 사용자 친화적인 인터페이스와 고급 검색 기능이 필요한 사용자를 위해, 탁월한 선택이 될 수 있습니다.

재귀적 파일 검색에 대한 최종 생각

Linux에서 재귀 파일 검색을 마스터하는 것은 효율적인 파일 관리, 특히 복잡한 디렉토리 구조에서 중요합니다. 다음과 같은 도구를 활용하여 , 및 다음과 같은 대안이 있습니다. , 사용자는 생산성을 크게 향상시킬 수 있습니다. 이러한 명령을 이해하고 활용하면 초보자와 숙련된 사용자 모두의 시간을 절약하고 작업을 단순화할 수 있으므로 파일 찾기가 간단한 프로세스가 됩니다.