특정 문자/숫자로 시작하고 끝나지만 파일의 특정 문자열도 포함하는 파일 이름을 나열하는 쉘 스크립트를 작성하는 방법을 찾으려고 노력 중입니다.
파일 이름은 숫자로 시작하고 문자로 끝나야 하지만 파일에는 "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이 반환되어 실행 됩니다. 여기서는 구성 요소에 파이프된 명령에서 찾은 파일을 나타냅니다. 반환이 일치하지 않으면 반환되므로 실행되지 않습니다.grep
xyz
-q
grep
0
echo $line
$line
find
while
grep
1
echo $line