ファイルのバイトが変更された時期を確認するには、head コマンドまたは同様のコマンドを使用します。

ファイルのバイトが変更された時期を確認するには、head コマンドまたは同様のコマンドを使用します。

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.

おすすめ記事