.datファイルを解析し、そのファイルで宣言された.jarファイルのタイムスタンプやファイルサイズなどのパターンを取得する方法

.datファイルを解析し、そのファイルで宣言された.jarファイルのタイムスタンプやファイルサイズなどのパターンを取得する方法

別のディレクトリにある次のjarファイルのサイズとタイムスタンプを比較したいと思います。

最初のデータは次のように取得されます。

grep -Eo "[[:digit:]]+[[:space:]]+[[:digit:]]+.[[:digit:]]+.[[:digit:]]+[[:space:]]+[[:digit:]]+.[[:digit:]]+.[[:digit:]]+[[:space:]]+.*?test1.jar" Sample.dat

出力1は次のようになります。

29003 2015-04-24 15:56:16 XYZ_jar/java7/test1.jar

2番目のデータは次のように取得されます。

cd /dir1/foo/xyz/java7
stat test1.jar

出力2は次のとおりです。

  File: `test1.jar'
  Size: 29003       Blocks: 64         IO Block: 1234   regular file
Device: ab12c/34567d    Inode: 1234567     Links: 1
Access: (0123/-rwxr-xr--)  Uid: (123456/foo)   Gid: ( 1234/  fooooo)
Access: 2015-06-01 04:00:03.000000000 -0500
Modify: 2015-04-24 15:56:16.000000000 -0500
Change: 2015-06-01 00:13:01.000000000 -0500

出力1のサイズとタイムスタンプ(それぞれ29003および2015-04-24 15:56:16)を、出力2のサイズと変更日(29003および修正日:2015-04-24 15)と比較する必要があります。 ):それぞれ56:16.000000000 -0500。

答えに基づく現在のコード/スクリプト:

cd /dir1/foo
output1=$( grep -Eo "[[:digit:]]+[[:space:]]+[[:digit:]]+.[[:digit:]]+.[[:digit:]]+[[:space:]]+[[:digit:]]+.[[:digit:]]+.[[:digit:]]+[[:space:]]+.*?test1.jar" Sample.dat )

cd /dir1/foo/xyz/java7
size=$( stat -c "%s" $test1.jar )


refdate=$( awk '{print $4}' <<< "$output1" )
modt=$( stat -c "%y" yourfile2 | awk '{print $1}' )

print $refdate
print $size
print $modt


if [[ "$modt" == "$refdate" ]]
then echo equal date
else echo different date
fi

ベストアンサー1

書式指定子を使用してstat特定の情報を取得できます。

stat -c "%s %Y" yourfile

後で比較するために別々に割り当てられます。

size=$( stat -c "%s" yourfile )
modt=$( stat -c "%Y" yourfile )

両方のファイルの属性を比較するには、次のように使用できます。

size1=$( stat -c "%s" yourfile1 )
size2=$( stat -c "%s" yourfile2 )

if [[ $size1 == $size2 ]]
then echo equal size
else echo different size
fi

これは、次の算術命令を使用してインラインで行うこともできます。

if (( $( stat -c "%s" yourfile1 ) == $( stat -c "%s" yourfile2 ) ))
then echo equal size
else echo different size
fi

フィールド4にISO日付を含む文字列と比較するには、が必要ですstat -c "%y"。たとえば、次のようになります。

refdate=$( awk '{print $4}' <<< "${output1}" )
modt=$( stat -c "%y" yourfile2 | awk '{print $1}' )

if [[ "$modt" == "$refdate" ]]
then echo equal date
else echo different date
fi

おすすめ記事