
디렉터리 내부에 파일 목록이 있고 정규식을 사용하여 디렉터리 안의 모든 파일 이름에 다음 구문이 있는지 확인하는 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가 일치하지 않습니다" 완료