我正在尝试使用“find”命令选择没有奇怪字符的文件名(如CR,LN,DEL,...)。
以下命令行在 RHEL 5 :
中正常工作find /dir -type f -regextype egrep -regex '^[[:print:]]+$'
find /dir -type f -regextype egrep -regex '^[^[:cntrl:]]+$'
但它不在 RHEL 4 中,因为regextype选项在find命令的4.1.20版本中不可用。
根据findutils包中的文档( /usr/share/info/find.info.gz ):
*Note Syntax of Regular Expressions: (emacs)Regexps, for a
*description of the syntax of regular expressions.
我很难理解Emacs正则表达式,因为在一个子目录中唯一的文件是
aaaa
以下命令行可以正常工作:
find . -type f -regex '\./[:alnum:]+'
find . -type f -regex '\./[:alpha:]+'
但这些其他的不是:
find . -type f -regex '\./[:print:]+'
find . -type f -regex '\./[^[:cntrl:]]+'
为什么接受某些角色类而不接受其他角色类? 你知道在RHEL 4中获得它的其他方法吗?
提前完成
答案 0 :(得分:1)
尝试使用[\x20-\x7E]
代替[:print:]
和[\x00-\x1F\x7F]
代替[:cntrl:]
。