이 디렉터리에 여러 개의 파일이 있고 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’.
\d
AFAIK 이들 중 어느 것도 십진수에 대한 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'
당신은 또한 볼 수 있습니다