web-dev-qa-db-ja.com

ディレクトリ内のすべてのログファイルを追跡する| zipファイルを除外する

セットディレクトリ内のzipファイルを除外しながら、ログファイルの束を調整するための適切なコマンドを見つけようとしています。ログファイルは、サイズが大きくなると圧縮されます。

現時点で使用しているイム:

tail -f /var/logs/myLog*

これは問題なく動作しますが、文字化けした混乱である.gzファイルもテールします。この拡張子のないファイルのみをテールする必要があります。

5
JackalopeZero

ファイル名に他の共通点がある場合-例:名前の長さ、名前のピリオドの数、名前の終わり...グロブを調整するだけです。

そうでない場合は、他のいくつかの方法があります。

tail -f `ls -l /var/logs/myLog* |grep -v .gz$`

または、xargsを使用します。

ls /var/logs/myLog* | grep -v .gz$ | xargs tail -f
3
Jenny D

通常、tail -f /var/logs/myLog*logが機能します。ただし、ファイル名の終わりが予測できず、実際に.gzで終わるファイルを除外することが唯一の方法である場合は、より複雑になります。 1つの可能性はこれです:

ls /var/logs/myLog* | grep -v .gz$ | xargs tail -f

bashで、extendedglobオプションが設定されている場合(デフォルト)、かっこで囲み、前にBang(_!_)を付けることで、globパターンを無効にすることができます。たとえば、!(*.gz)は、名前が_.gz_で終わらないすべてのアイテムに一致します。詳細については、EXPANSIONマニュアルページのbashセクションの_Pathname Expansion_サブセクションを参照してください。

zshで、extglobオプションが設定されている場合(デフォルトではnot)、キャレットを前に付けることでglobパターンを無効にできます(_^_)。たとえば、_^*.gz_は、名前が_.gz_で終わらないすべてのアイテムに一致します。詳細については、zshexpnマニュアルページの_FILENAME GENERATION_セクションを参照してください。

一般に、グロブパターンでlsを使用する場合は、_-d_を指定する必要があります。これは、シェルがグロブパターンを一致する名前のリストに展開し、それぞれをlsに個別の引数として渡すためです。 _-d_を使用しない場合、lsは、名前が付けられたディレクトリのcontentsを一覧表示します。

2

次の行を使用できます。

file /var/log/* | grep "ASCII text" | cut -d ":" -f 1 | xargs tail -f
1
StefCo

-nオプションを使用して、「古い」ものを使用しないように指定することもできます。

tail -f -n 0 /var/log/*

または

tail -fn0 /var/log/*
0
Vincent G