특정 이름과 특정 문자열을 포함하는 파일 나열

특정 이름과 특정 문자열을 포함하는 파일 나열

특정 문자/숫자로 시작하고 끝나지만 파일의 특정 문자열도 포함하는 파일 이름을 나열하는 쉘 스크립트를 작성하는 방법을 찾으려고 노력 중입니다.

파일 이름은 숫자로 시작하고 문자로 끝나야 하지만 파일에는 "xyz"도 포함되어야 한다고 가정해 보겠습니다. 결과가 파일 이름이 되도록 어떻게 계산할 수 있습니까?

파일 이름은 현재 디렉터리에서 찾아야 합니다.

별도로 얻는 방법은 알고 있지만 두 가지를 결합하여 올바른 결과를 얻는 방법은 모르겠습니다.

예: 파일 이름 목록:
- "F"로 시작하고 숫자로 끝납니다.
- 파일에 "xyz"가 포함되어 있습니다.
file1 = "xyz"
file2 = "xyz"
file3 = "xyz"
Tile4 = "xyz"
file = "xyz"

File1과 File3만 기준을 충족하므로 여기에 나열됩니다.

답변1

grep -l 'xyz' F*[0-9]

이름이 "F"로 시작하고 숫자로 끝나는 모든 파일에서 xyz를 찾습니다. 이 -l스위치를 사용하면 Grep이 일치하는 줄을 억제하고 일치하는 파일만 보고합니다.

답변2

#!/bin/bash
find . -name "F*[[:digit:]]" | while read line; do 
    grep -q xyz $line 
    if [ $? -eq 0 ]; then 
        echo $line 
    fi;  done

위의 코드는 현재 디렉토리에서 F숫자로 시작하고 끝나는 파일을 찾습니다. 그런 다음 기준을 통과하는 각 파일을 반복 하고 문자열을 찾기 위해 파일에서 find각 반복이 수행됩니다 . .grep 출력이 인쇄되지 않기 때문입니다 . 그런 다음 명령의 오류 상태를 확인합니다 . 파일에 일치하는 항목이 있으면 grep이 반환되어 실행 됩니다. 여기서는 구성 요소에 파이프된 명령에서 찾은 파일을 나타냅니다. 반환이 일치하지 않으면 반환되므로 실행되지 않습니다.grepxyz-qgrep0echo $line$linefindwhilegrep1echo $line

관련 정보