n個のファイルを含む配列INPUTFILESがあります
INPUTFILES=( file_0 ... files_n-1 )
そして、ファイルの最初の行で配列順に並べ替える必要があります。
ファイルは次のようになります。
2012.09.20 17:10
2012.11.21 00:10
2012.12.22 15:10
2012.12.23 15:10
私はすでに2つのファイルを比較する機能を持っています:
IsSooner () {
ONEFIRST=$( head -1 "${1}" )
ONELAST=$( tail -1 "${1}" )
TWOFIRST=$( head -1 "${2}" )
TWOLAST=$( tail -1 "${2}" )
TIMEFORMAT='Y.%m.%d %H:%M:'
perl <<EOF
use strict;
use warnings;
use Time::Piece;
open STDERR, "> /dev/null";
my @dates1 = ("${ONEFIRST}","${ONELAST}");
my @range1 = map Time::Piece->strptime("\$_", "${TIMEFORMAT}"), @dates1;
my @dates2 = ("${TWOFIRST}","${TWOLAST}");
my @range2 = map Time::Piece->strptime("\$_", "${TIMEFORMAT}"), @dates2;
if ( \$range1[0] < \$range2[0] ) {
exit 0;
}
exit 1;
EOF
[ $? -eq 0 ] && {
return 0
}
return 1
}
早い方がファイルの最初の日付になり、配列内の小さい方のインデックスになります。
必要に応じてBASHで解決します。
更新 事前に日付の形式がわかりません。strftime(3c)形式になることはわかっています。