1

「検索」コマンドを使用して、奇妙な文字 (CR、LN、DEL など) を含まないファイル名を選択しようとしています。

次のコマンド ラインは、RHEL 5で正常に機能します。

find /dir -type f -regextype egrep -regex '^[[:print:]]+$'
find /dir -type f -regextype egrep -regex '^[^[:cntrl:]]+$'

ただし、バージョン 4.1.20 の find コマンドでは regextype オプションを使用できないため、RHEL 4では使用できません。

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 に答える