1

我正在尝试使用“查找”命令来选择没有奇怪字符的文件名(如 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 中获得它的其他方法吗?

提前感谢

4

1 回答 1

1

尝试使用[\x20-\x7E]代替[:print:][\x00-\x1F\x7F]代替[:cntrl:]

于 2013-08-01T09:53:08.400 回答