Linux シェル,ファイルの新旧(タイムスタンプ)を比較する

スポンサーリンク

鍛錬 418

Linux シェルスクリプト,ファイルの新旧(タイムスタンプ)を比較する

ファイルの新旧(タイムスタンプ)を比較して、どちらのファイルが新しいのか・古いのかを判断するには、-nt と -ot を使用します。

-nt と -ot 共に、真の場合は 0 、偽の場合は 1 となります。
 
使用方法は、以下に示す通りです。

ファイル1の方が新しいのかを比較

ファイル1 -nt ファイル2

 
ファイル1の方が古いのかを比較

ファイル1 -ot ファイル2
スポンサーリンク

シェルスクリプト

以下は、ファイルの新旧を比較するシェルスクリプト、cmp_time.sh です。

#!/bin/sh

FILENAME_1="sample_1.txt"
FILENAME_2="sample_2.txt"

# ファイル1の方が新しい場合
if [ "$FILENAME_1" -nt "$FILENAME_2" ]; then
	echo "new file -> $FILENAME_1"
	echo "old file -> $FILENAME_2"
# ファイル2の方が新しい場合
elif [ "$FILENAME_1" -ot "$FILENAME_2" ]; then
	echo "new file -> $FILENAME_2"
	echo "old file -> $FILENAME_1"
# ファイル1とファイル2のタイムスタンプが同じ場合
else
	echo "$FILENAME_1 == $FILENAME_2 , (time stamp)"
fi
スポンサーリンク

実行結果

以下は、2つのファイル sample_1.txt と sample_2.txt について、3つの新旧パターンを確認しています。

関連記事:Linux,lsコマンドの使用時に、時刻を秒単位で出力する方法

sample_1.txt の方が新しい場合

以下は、sample_1.txt の方が新しい場合において、シェルスクリプト cmp_time.sh を実行しています。

***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ls --full-time sample_1.txt sample_2.txt
-rw-r--r-- 1 *** *** 4 2019-02-16 01:27:34.094317995 +0900 sample_1.txt
-rw-r--r-- 1 *** *** 4 2019-02-16 01:24:13.266656206 +0900 sample_2.txt
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./cmp_time.sh
new file -> sample_1.txt
old file -> sample_2.txt

sample_2.txt の方が新しい場合

以下は、sample_2.txt の方が新しい場合において、シェルスクリプト cmp_time.sh を実行しています。

***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ls --full-time sample_1.txt sample_2.txt
-rw-r--r-- 1 *** *** 4 2019-02-16 01:27:34.094317995 +0900 sample_1.txt
-rw-r--r-- 1 *** *** 4 2019-02-16 01:29:01.052462586 +0900 sample_2.txt
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./cmp_time.sh
new file -> sample_2.txt
old file -> sample_1.txt

sample_1.txt と sample_2.txt のタイムスタンプが同じ場合

以下は、sample_1.txt と sample_2.txt のタイムスタンプが同じ場合において、シェルスクリプト cmp_time.sh を実行しています。

関連記事:Linux,2つのファイルのタイムスタンプを、同じにする

***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ touch -r sample_1.txt sample_2.txt
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ls --full-time sample_1.txt sample_2.txt
-rw-r--r-- 1 *** *** 4 2019-02-16 01:32:46.327702309 +0900 sample_1.txt
-rw-r--r-- 1 *** *** 4 2019-02-16 01:32:46.327702309 +0900 sample_2.txt
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ 
***@ubuntu:~/***/test/shell$ ./cmp_time.sh
sample_1.txt == sample_2.txt , (time stamp)
タイトルとURLをコピーしました