前回grep-changelogがPerlで書かれてることが分かりました。
242 # If files were specified on the command line, parse those files in the 243 # order supplied by the user; otherwise parse default files ChangeLog and 244 # ChangeLog.NNN according to $reverse. 245 unless (@ARGV > 0) { 246 @ARGV = ("ChangeLog"); 247 248 push @ARGV, 249 map {"ChangeLog.$_"} 250 sort {$b <=> $a} 251 map {/\.(\d+)$/; $1} 252 do { 253 opendir D, '.'; 254 grep /^ChangeLog\.\d+$/, readdir D; 255 }; 256 257 @ARGV = reverse @ARGV if $reverse; 258 } 259 260 while (defined (my $log = shift @ARGV)) { 261 parse_changelog ($log) if -f $log; 262 } 263 264 265 # grep-changelog ends here. takk@deb9:~$
246行目に、ChangeLogという文字列で初期化しているのが気になったのですが、何のことはない。後ろに4桁の数字のない、ただのChangeLogというファイルも存在してるだけですね。
このファイルを初期値に持つということは、ただのChangeLogは、必ず存在するファイルと考えれば良いのでしょう。
ChangeLogとChangeLog-****という命名規則の異なるファイルが混在すると、ChangeLogはもしかしたら、いずれかのChangeLog-****のコピーなのでは?
と憂慮してしまいます。
心配を取り除くため、一致するファイルがないか確認してみましょう。ChangeLogに対してだけでなく、すべてのファイルが不一致であることを確認します。
md5sumを使います。
takk@deb9:~/src/binutils-2.28/binutils$ md5sum ChangeLog* cae1395d2ba32bd7aa1bff4ab668e89f ChangeLog cd19eaa8aa273aa4d61d7349e18c3389 ChangeLog-0001 4dd4f6db448208624501492aaaa8ab38 ChangeLog-0203 9f7cd70e402801d73a0ca89c1d3f3c54 ChangeLog-2004 8baed05a82856c5df1bed764e235c8d4 ChangeLog-2005 5f7af231d9ff88f0bc687eda9cd24e98 ChangeLog-2006 81f74beea5680160602e72f1bbbbf124 ChangeLog-2007 6ad444fdd71464b78979bb60bfc9dee2 ChangeLog-2008 f1f25632c9112f18ff9d9fc483c6f76f ChangeLog-2009 b31314081b88b15ab4cc9466bca4897a ChangeLog-2010 4544318b4a2588bbc6a0121481dda180 ChangeLog-2011 42a0b322de143a02fa7bdf9cad745e94 ChangeLog-2012 a772ed439a2155615a476b9391604cc0 ChangeLog-2013 a5bd2fda981f1c341aa4723ea0bb7430 ChangeLog-2014 7fe60a4d365119b06cac1807caf6ed44 ChangeLog-2015 130d6dbdc1fda07ca1394311897d313f ChangeLog-2016 327b22f42304c37a85ebf08765a083da ChangeLog-9197 d93f4b8b246d5c55c84ad1d8c777573d ChangeLog-9899 takk@deb9:~/src/binutils-2.28/binutils$
さらに、フィールド1にソートをかけて、uniqしてみましょう。
takk@deb9:~/src/binutils-2.28/binutils$ md5sum ChangeLog* | cut -d' ' -f1 | sort | uniq -c 1 130d6dbdc1fda07ca1394311897d313f 1 327b22f42304c37a85ebf08765a083da 1 42a0b322de143a02fa7bdf9cad745e94 1 4544318b4a2588bbc6a0121481dda180 1 4dd4f6db448208624501492aaaa8ab38 1 5f7af231d9ff88f0bc687eda9cd24e98 1 6ad444fdd71464b78979bb60bfc9dee2 1 7fe60a4d365119b06cac1807caf6ed44 1 81f74beea5680160602e72f1bbbbf124 1 8baed05a82856c5df1bed764e235c8d4 1 9f7cd70e402801d73a0ca89c1d3f3c54 1 a5bd2fda981f1c341aa4723ea0bb7430 1 a772ed439a2155615a476b9391604cc0 1 b31314081b88b15ab4cc9466bca4897a 1 cae1395d2ba32bd7aa1bff4ab668e89f 1 cd19eaa8aa273aa4d61d7349e18c3389 1 d93f4b8b246d5c55c84ad1d8c777573d 1 f1f25632c9112f18ff9d9fc483c6f76f takk@deb9:~/src/binutils-2.28/binutils$
2以上の数のMD5がないので、重複ファイルはありませんね。
コメント