ファイルが最後に読み込まれてから最後に変更された内容をどのように取得できますか?
これより正確なものは次のとおりです。
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