我正在寻找的文件格式为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.
如何使其有效?
答案 0 :(得分:1)
我认为你的方法正确,需要在find
man page(例如-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-awk
,posix-basic
,posix-egrep
和posix-extended
)。
doesn't support custom hex range definition (将 Perl 与 POSIX 进行比较)。
答案 1 :(得分:0)
正则表达式中存在错误,在CJK匹配部分之外。要匹配的文件格式为不
cmn-我.flac
但相当:
./cmn-我.flac
以下命令完全有效,匹配./cmn-*.flac
*
是任何单个字符,包括CJK :
find ./ -regex "./cmn-.\.flac"
以下内容完全有效,匹配./cmn-*.flac
,其中*
是任何单个 CJK字符。
<<还没找到!欢迎帮助! >>