xdayよりも古いapacheログファイルを格納場所に移動する短いスクリプトがあります。正規表現はmod_jkディレクトリのjk.shm.some_numberファイル名を取得していますが、これは望ましくない動作です(mtimeフラグを使用して数日のクッションを使用しているので、現在のアクティブファイルが誤って吸われるのを避けることはできません)私はこの問題を今までには見たことがありません)。正規表現全体は:'[error,access,error_log,access_log,mod_jk.log]*.[0-9]*'
私は愚かな運のために働いていたと思います。私はまた、mod_jk部分を単独で実行するように隔離しようとしました。'mod_jk.log.[0-9]*'
と期待通りに動作します(\の前に\を付けないでください)。角括弧の中に含めると、すぐにjk.shm.some_numberファイルが取得されます。大括弧内の文字の範囲に一致するので、私は推測しています。私はこれをRegexBuddyを使って動作させようとしていますが、スマートな人のうちの1人が私の間違いを指摘し、私を正しい道に導く助けになると思いました。 。bashシェルコマンドのRegexは、大規模な正規表現の一部ではなく、単独で動作します。
find -name '[error,access,error_log,access_log,mod_jk.log]*.[0-9]*' -type f
ベストは、一致する必要があるいくつかの行を指定することです。 –
error.11111111111、access.11111111、error_log.1111111111、access_log.1111111、mod_jk.log.111111111。基本的には、上記で説明したと思ったApacheのログファイルのディレクトリとサブディレクトリのログファイルのファイル名です。 –
私の推測では、正規表現を使用しているのではなく、globパターンです。 'mv {access、error、access_log、error_log、mod_jk.log}。[0-9] * dir'のようなものを試しているなら、これは正規表現ではなく拡張globパターンであり、中括弧でなければなりません。 – tripleee