tailコマンドを使用すると、ファイルの長さ(バイト単位)の変更を示すイベントを受信できます。
ファイルの内容が変更されたが長さが同じ場合は、イベントを受け取る方法を探しています。特に、ファイルの最初または2行目の変更を受け取ります。
(headコマンドはこれを実行すると予想できますが、実際には実行されます。いいえheadコマンドは変更を受け取ることができるように見え、コンテンツの先頭のみを取得します。 )
ファイルの内容(特にファイルの先頭)への変更を受け取ることができるかどうかを知っている人はいますか?
ファイルにデータを追加するプロセスと、ファイルの最初の行を読み取って削除するプロセスがあることに注意してください。
ファイルヘッダーの変更を独立して受信することに興味がありますが、ファイルに添付されているイベントをキャプチャまたはフィルタリングすることは望ましくありません。
ベストアンサー1
たぶん、次のようなものがあります。
#!/bin/bash
while true; do
diff -q <(head -n 1 fileA.txt) <(head -n 1 fileB.txt)
sleep 5
done
次の2つのファイル(fileA.txt
およびfileB.txt
)が与えられた場合:
cat fileA.txt fileB.txt
foo
bar
foo
bar
私が変わったとき最初いいねfileA.txt
:
cat fileA.txt
fooo
bar
スクリプトから次の出力を取得します。
./checkFirst.sh
Files /dev/fd/63 and /dev/fd/62 differ
Files /dev/fd/63 and /dev/fd/62 differ
Files /dev/fd/63 and /dev/fd/62 differ
Files /dev/fd/63 and /dev/fd/62 differ
私が変わったら第二いいですね。スクリプトでは何も起こらず、繰り返し続けます。
cat fileA.txt
foo
barbara
Mac OS X 10.11.6以降でテストされています。
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)
Copyright (C) 2007 Free Software Foundation, Inc.