带有正则表达式的 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[0-9]or[[:digit:]]并使用-regextype egrepor -regextype posix-extendedex。

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

也可以看看

相关内容