最後に読んだ後に最後に変更されたコンテンツを取得する

最後に読んだ後に最後に変更されたコンテンツを取得する

ファイルが最後に読み込まれてから最後に変更された内容をどのように取得できますか?

これより正確なものは次のとおりです。

tail - <nr >file_1.txt >file_2.txt

そのうち、file_2.txtが最後に変更された内容を取得します。

ベストアンサー1

これを行う唯一の方法は、最後にファイルを読み取ったときに一時的な名前でファイルのコピーを保持し、再読み込みしたときに以前にdiff読み取ったものと比較するなどのツールを使用することです。ファイルのコピーとファイルの現在のバージョン。

はい

いくつかのサンプルファイル。

$ seq 10 > somefile.txt
$ ls -l |grep somefile.txt 
-rw-rw-r--   1 saml saml      21 Oct 26 13:29 somefile.txt

今読んでみましょう。

$ cat somefile.txt | tee somefile_READ1.txt
1
2
3
4
5
6
7
8
9
10

ここのコマンドは、teeファイルを表示し、次に読む行を示す「バックアップ」コピーを作成します。今残っているのは次のファイルだけです。

$ ls -l |grep somefile
-rw-rw-r--   1 saml saml      21 Oct 26 13:30 somefile_READ1.txt
-rw-rw-r--   1 saml saml      21 Oct 26 13:29 somefile.txt

今、いくつかの追加の行が追加されました。

$ seq 11 20 >> somefile.txt

2つのファイルの日付を比較すると、最後に読んだ後に作成された日付を確認できます。

$ ls -l |grep somefile
-rw-rw-r--   1 saml saml      21 Oct 26 13:30 somefile_READ1.txt
-rw-rw-r--   1 saml saml      51 Oct 26 13:32 somefile.txt

それでは、次の2つのファイルを比較してみてください。

$ diff -y somefile.txt somefile_READ1.txt  | column -t
1   1
2   2
3   3
4   4
5   5
6   6
7   7
8   8
9   9
10  10
11  <
12  <
13  <
14  <
15  <
16  <
17  <
18  <
19  <
20  <

上から2つのファイルを並べて見ることができます。更新されたファイルコンテンツは左側にあり、元のコンテンツは右側にあります。

違いを確認するには、次の形式を使用できますdiff

$ diff somefile.txt somefile_READ1.txt 
11,20d10
< 11
< 12
< 13
< 14
< 15
< 16
< 17
< 18
< 19
< 20

おすすめ記事