정규 표현식을 사용하여 디렉터리 내부의 파일 이름 확인

정규 표현식을 사용하여 디렉터리 내부의 파일 이름 확인

디렉터리 내부에 파일 목록이 있고 정규식을 사용하여 디렉터리 안의 모든 파일 이름에 다음 구문이 있는지 확인하는 bash 스크립트를 만들고 싶습니다.

xxxx_xxxx_xx_xx

여기서 x는 숫자입니다.

편집: 정규식에만 필요합니다.

답변1

어때?

#/usr/bin/env bash
for f in *
do
  [[ $f =~ [0-9]{4}_[0-9]{4}_[0-9]{2}_[0-9]{2} ]] || 
    echo "File $f does not match"
done

정규식은 숫자( [0-9])가 있는지 확인합니다. 중괄호 안의 숫자는 반복 횟수이므로 [0-9]{4}4자리 숫자와 일치합니다.

이를 위해 bash를 사용하지 말고 대신 찾는 것이 좋습니다. 아마도 더 빠르고 이식성이 더 좋을 것입니다(모든 쉘이 정규식을 처리할 수 있는 것은 아닙니다).

find -regextype posix-egrep -not -regex '\./[0-9]{4}_[0-9]{4}_[0-9]{2}_[0-9]{2}'

답변2

투박하지만 이식성이 매우 뛰어납니다.

#!/bin/sh
x의 경우 *
하다
    케이스 "$x" in
        [0-9][0-9][0-9][0-9]_[0-9][0-9][0-9][0-9]_[0-9][0- 9]_[0-9][0-9])
            echo "$x개 일치"
            ;;
        *)
            echo "$x가 일치하지 않습니다"
    에삭
완료
#                       그리고 짜증나게 완성하려면,
x의 경우 .*
하다
    echo "$x가 일치하지 않습니다"
완료

관련 정보