我无法让unicode hex notation在linux $find
实用程序及其-regex
功能中运行。有我的情况。
给定一个包含5个文件的文件夹:
./cmn-我.flac
./cmn-的.flac
./cmn-三.flac
./cmn-a.flac
./cmn-b.flac
要查找包含CJK字符的文件,我尝试了以下操作:
find ./ -regex "./cmn-.\.flac" #Find *ALL* files "*.txt", not what I want.
find ./ -regex "./cmn-[\x4e00-\x9fa5]\.flac" #fails
find ./ -regex "./cmn-[\u4e00-\u9fa5]\.flac" #fails
find ./ -regex "./cmn-[\x{4e00}-\x{9fa5}]\.flac" #fails
find ./ -regex "./cmn-[\u{4e00}-\u{9fa5}]\.flac" #fails
find ./ -regex "./cmn-[\U0004e00-\U0009fa5]\.flac" #fails
没有成功。
如何使用find ./ -regex "[myRegEx]"
和unicode hex notation正则表达式查找包含CJK字符的文件?
答案 0 :(得分:1)
正如我在What regex to find files with CJK characters using find
command? find
中解释的那样,使用POSIX正则表达式并不支持这种模式。
查看-regex-type
选项,我只看到POSIX
正则表达式类型:emacs
(默认),posix-awk
,posix-basic
,posix-egrep
和posix-extended
)。
doesn't support custom hex range definition (将 Perl 与 POSIX 进行比较)。
但grep
确实有实验性 -P
或--perl-regexp
选项,您可以使用此类模式:
find . -name 'cmn-*.flac' -print | grep -P '[\x4e00-\x9fa5]'