perl のワンライナーに関しての、適当な解説 #1/#2/#3/#4
dupc
あれ? OSX で md5 チェックするのって、openssl md5 SOMETHING
が定番だと思ってたけど、いつのまにか /sbin/md5
がある。
相変わらず sha1 チェックには openssl sha1
する事になるんだろうけど、md5
の方が、-r
が使えてちょっとだけ利便性が上がる?
ちゅー事で、自分用重複ファイル検索コマンドを、ちょっとだけリニューアル。
.bashrc
function dupc(){
find . -type f -size '+0c' "$@" | perl -Mvars=%h -lne 'next if qx{md5 -r "$_"} !~ /^(\S+)\s(.*?)$/ ; push @{$h{$1}}, $2 ;}{ print join "\n", $_, map{ "\t$_" } @{$h{$_}} for grep { @{$h{$_}} > 1 } keys %h'
}
リニューアルつっても next if ... ;
部分の、実行コマンドと正規表現が、変更になっただけだけど。
ファイル縛りと、空ファイル除外の為の -size '+0c'
のみデフォで。
使い方
$ cd foo
$ dupc -maxdepth 1
8dad5f05f2ffd34e2bf0cbab16ed15e0
./ムフフな.jpg
./ゲヘヘな.jpg