3

Javascript で機能する正規表現がありますが、Linux の find コマンドでは機能しません。目的は、特定のディレクトリを除外して、過去 90 日間に更新されたファイルのリストを収集することです (たとえば、ディレクトリを含めたいが、を含めたくないとします/data/safe/23/test) /data/safe/23/skip1。正規表現は次のとおりです。

^/data/safe/\d{1,4}/(?:(?!skip1|skip2).*)

そして、これがfindコマンドです(私はposix-extendedを使用していることに注意してください。これが問題になる可能性があります):

find /data/safe -regextype posix-extended -regex '^/data/safe/\d{1,4}/(?:(?!skip1|skip2).*)' -mtime -90

最後に、生成されるエラーは次のとおりです。

find: Invalid preceding regular expression

どんな助けでも大歓迎です!

4

2 に答える 2

2

posix-extended は "?:" と "?!" をサポートしていないと思います。

とにかく、find を使用すると、次のようなものを使用する方が簡単です。

find /data/safe -regextype posix-extended -regex '^/data/safe/[0-9]{1,4}/.*' ! -regex '^/data/safe/[0-9]{1,4}/(skip1|skip2).*' -mtime -90
于 2012-05-23T18:20:08.547 に答える
1

あなたはそれを間違っています。中かっこをアスタリスクに置き換える必要があります。また、tar または touch コマンドを使用して、その全体をパイプする必要があります。

于 2012-05-23T18:15:47.223 に答える