前回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がないので、重複ファイルはありませんね。


コメント