Bash 와일드카드

Bash 와일드카드

최소 3개의 문자(문자 "l"로 시작)가 포함된 모든 파일을 찾아야 합니다.

나는 이것을 사용하고 있지만 3 글자 미만의 파일도 제공합니다.

LS | grep "^l"

최소 길이를 결정할 수 있습니까? 나는 문자 "?"가 정확한 길이에 사용된다는 것만 알고 있습니다.

답변1

Bash 와일드카드

정규식을 사용하지 마세요. 사용구체(bash를 사용한다고 가정).

ls l??*

설명하다

  • ?단일 문자를 나타냅니다.
  • *0개 이상의 문자를 나타냅니다.

정규식

정말로 정규 표현식을 사용하고 싶다면 다음을 사용할 수 있습니다.

ls | grep "^l...*"

설명하다

  • .단일 문자를 나타냅니다.
  • .*0개 이상의 문자를 나타냅니다.

답변2

사용할 수 있는 대체 솔루션은 다음과 같습니다 . find그렇지 않은 경우에도 작동합니다 bash. 이 솔루션은 문자 "l"로 시작하는 문자가 3개 이상인 모든 파일과 폴더를 찾습니다(아래 파일 전용 버전 참조).재귀적으로(아래 비재귀 참조) 아래에서 실행합니다.

find . -regex '.*/l[^/][^/][^/]*'

비재귀적버전(현재 디렉토리에 있는 버전만 검색)은 다음과 같습니다.

find . -maxdepth 1 -regex '.*/l[^/][^/][^/]*'

폴더를 포함하지 않으려면 다음을 사용할 수 있습니다.

find . -type f -regex '.*/l[^/][^/][^/]*'

또는 (비재귀적)

find . -maxdepth 1 -regex '.*/l[^/][^/][^/]*'

관련 정보