배쉬 모드 문제

배쉬 모드 문제

디렉토리에 파일 이름에 숫자가 포함된 일부 파일이 있는데, 그 중 일부는 "d" 문자(반드시 확장자는 아님)로 끝납니다. 다음은 파일 세트의 예입니다.

alle5m6ilsd.d
alle34mails
alle34mailsd
allemails
allemails.d

숫자를 포함하고 "d"로 끝나는 파일 이름을 선택하는 UNIX bash 명령을 작성하고 싶습니다. 따라서 내 대답은 다음과 같아야 합니다.

alle5m6ilsd.d 
alle34mailsd 

답변1

글로벌 모드를 사용할 수 있습니다:

*[[:digit:]]*d
  • *0개 이상의 문자 일치

  • [:digit:]당신의 숫자와 일치locale

  • dd마지막에 문자 그대로의 의미를 일치시키세요.

localeASCII 문자 세트에만 의존하고 싶지 않은 경우 :

*[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의 두 가지 예와 모두 일치하지 않으며 dOP 기준에 따라 숫자 바로 뒤의 항목(꼭 끝일 필요는 없음)과 잘못 일치합니다.

관련 정보