セットディレクトリ内のzipファイルを除外しながら、ログファイルの束を調整するための適切なコマンドを見つけようとしています。ログファイルは、サイズが大きくなると圧縮されます。
現時点で使用しているイム:
tail -f /var/logs/myLog*
これは問題なく動作しますが、文字化けした混乱である.gzファイルもテールします。この拡張子のないファイルのみをテールする必要があります。
ファイル名に他の共通点がある場合-例:名前の長さ、名前のピリオドの数、名前の終わり...グロブを調整するだけです。
そうでない場合は、他のいくつかの方法があります。
tail -f `ls -l /var/logs/myLog* |grep -v .gz$`
または、xargsを使用します。
ls /var/logs/myLog* | grep -v .gz$ | xargs tail -f
通常、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を一覧表示します。
次の行を使用できます。
file /var/log/* | grep "ASCII text" | cut -d ":" -f 1 | xargs tail -f
-n
オプションを使用して、「古い」ものを使用しないように指定することもできます。
tail -f -n 0 /var/log/*
または
tail -fn0 /var/log/*