정규식을 사용한 bash 명령은 파일을 이동하지 않습니다

정규식을 사용한 bash 명령은 파일을 이동하지 않습니다

이 디렉터리에 여러 개의 파일이 있고 someDir이 끝이 있는 파일만 이동하려고 합니다.O_010_0000000028181996.xml

내 정규식을 온라인으로 확인한 결과 일치합니다. 문제는 bash 명령을 실행할 때 파일이 폴더로 이동하지 않는다는 것입니다 found.

내 명령 bash 명령은 다음과 같습니다

find /home/someDir/ -regex '\d{10}.{3}O_010_0000000028181996\.xml' -exec mv '{}' /home/found/ \;

someDir 디렉터리의 파일 이름 예:

0208420319-1-O_010_0000000028174248.xml
0208461630-1-O_010_0000000028178356.xml
0208696934-1-O_010_0000000028181996.xml
0208696935-1-O_010_0000000028181996.xml
0208735127-1-O_010_0000000028186468.xml
0208774443-1-O_010_0000000028191308.xml
0208812611-1-O_010_0000000028196104.xml
0208858156-1-O_010_0000000028198984.xml

ベストアンサー1

적어도 GNU에서는 find어떤 정규식을 지원하는지 확인할 수 있습니다.

$ find -regextype help
find: Unknown regular expression type ‘help’; valid types are ‘findutils-default’, ‘ed’, ‘emacs’, ‘gnu-awk’, ‘grep’, ‘posix-awk’, ‘awk’, ‘posix-basic’, ‘posix-egrep’, ‘egrep’, ‘posix-extended’, ‘posix-minimal-basic’, ‘sed’.

\dAFAIK 이들 중 어느 것도 십진수에 대한 PCRE를 지원하지 않습니다. 또한 findutils-default명시적인 지정이 없을 때 적용되는 유형은 및 수량자만 지원합니다.-regextype*+?

\d당신이 얻을 가능성이 가장 가까운 것은 or를 교체 [0-9]하고 or ex를 [[:digit:]]사용하는 것 입니다 .-regextype egrep-regextype posix-extended

find . -regextype posix-extended -regex '.*/[0-9]{10}.{3}O_010_0000000028181996\.xml'

당신은 또한 볼 수 있습니다

おすすめ記事