什么正则表达式使用`find`命令来查找与CJK字符的文件?(What regex to find

2019-10-20 12:36发布

我正在寻找的文件的形式的cmn-我.flac ,其中CJK字符是可变的。

使用find命令,我应该用什么样的正则表达式来找到其名称中的单CJK字符的所有文件?


提示:下面的正则表达式找到包括那些使用和不使用 CJK字符的所有文件:

find ./ -regex '.*\..*'  # ex: cmn-我.flac

然后 :

find ./ -regex "cmn-.*[\x4e00-\x9fa5]*\.flac"   # the `-` breaks => fails 
find ./ -regex ".*[\x4e00-\x9fa5]*\.flac"       # finds with n CJK characters => we get closer!
find ./ -regex ".*[\x4e00-\x9fa5]{1}\.flac"     # the `{1}` breaks => fails. 
find ./ -regex ".*[\x4e00-\x9fa5]?\.flac"       # the `?` breaks => fails. 

如何使它运作?

Answer 1:

我认为你是在正确的道路,需要寻找更多的在find手册页 (如-regextype )。

无法重现

find ./ -regex "cmn-.*[\x4e00-\x9fa5]*\.xml"
# find: Invalid range end

find的版本

首先,一定要检查哪个版本find你正在使用,有实现之间存在一些差异:

find --version

给:

find (GNU findutils) 4.4.2
…

说明

纵观-regex-type选项,我只看到POSIX正则表达式类型: emacs (默认), posix-awkposix-basicposix-egrepposix-extended )。

不支持自定义的十六进制范围定义 (符合POSIX比较的Perl)。



Answer 2:

  1. 有一个错误的正则表达式,中日韩匹配的部分之外。 该文件的形式来匹配

    cmn-我.flac

    相反

    ./cmn-我.flac

  2. 下面的命令完全适用,配套./cmn-*.flac其中*是任何单个字符, 包括CJK:

    find ./ -regex "./cmn-.\.flac"

  3. 完全以下工作,匹配./cmn-*.flac其中*是任何单个字符CJK。

    <<还没有找到! 帮助欢迎您! >>



文章来源: What regex to find files with CJK characters using `find` command?