디렉토리에 파일 이름에 숫자가 포함된 일부 파일이 있는데, 그 중 일부는 "d" 문자(반드시 확장자는 아님)로 끝납니다. 다음은 파일 세트의 예입니다.
alle5m6ilsd.d
alle34mails
alle34mailsd
allemails
allemails.d
숫자를 포함하고 "d"로 끝나는 파일 이름을 선택하는 UNIX bash 명령을 작성하고 싶습니다. 따라서 내 대답은 다음과 같아야 합니다.
alle5m6ilsd.d
alle34mailsd
답변1
글로벌 모드를 사용할 수 있습니다:
*[[:digit:]]*d
*
0개 이상의 문자 일치[:digit:]
당신의 숫자와 일치locale
d
d
마지막에 문자 그대로의 의미를 일치시키세요.
locale
ASCII 문자 세트에만 의존하고 싶지 않은 경우 :
*[0-9]*d
예:
% ls
alle34mails alle34mailsd alle5m6ilsd.d allemails allemails.d
% ls *[[:digit:]]*d
alle34mailsd alle5m6ilsd.d
답변2
수정된 패턴은 다음과 같아야 합니다.
*[[:digit:]].*d$
또는
*[0-9].*d$
heemayl의 설명을 추가하면 숫자만 일치하면 OP 요구 사항의 해당 부분을 충족할 수 있습니다. 그런 다음 digital 뒤에 .*
다른 숫자를 포함할 수 있는 다른 문자를 허용해야 합니다 . 그런 다음 리터럴이 있어야 d
하지만 문자열 끝에 고정되어야 합니다 $
. heemayl의 패턴은 OP의 두 가지 예와 모두 일치하지 않으며 d
OP 기준에 따라 숫자 바로 뒤의 항목(꼭 끝일 필요는 없음)과 잘못 일치합니다.