Delete Incoming if Identical

There is a feature in Cerious Thumbs Plus (an image browser I use) that I've always thought would be very powerful for use on general files. In Thumbs Plus, I can select a bunch of files in one directory, move them to another directory, and if files with matching names are shown one of the options is "Delete Incoming Files if Identical". This will delete incoming files if not only the filename matches, but if the two files are in fact identical (I think it uses MD5).

Opus has a "Skip Identical" option (although I haven't quite figured out what it's logic is), but when I have a directory full of PDF files from my laptop or an external drive, and I want to move them into my primary repository, having a "Delete Incoming Files if Identical" would save me an enormous amount of time vs. skipping incoming and then figuring out what to delete manually (I'm dealing with thousands to tens of thousands of files here, maybe 25% of which will be duplicates).

I've thought there may be some way to do this myself with some of the power user features in Opus, but I haven't gotten far enough into them to work it out yet. Any suggestions, or does anyone else think this would be a useful feature?


You could use the Synchronize tool to determine which files need to be copied, and do that actual copy. All that would remain is for you to delete all the source files once the destination has been updated (synchronized).

Alternatively, Opus includes a find duplicates tool which you may be able to utilitize to determine which files need to be copied.

There are also some Copy commands which you can use in your own custom buttons: Copy UPDATEALL will update files that are different but won't use md5 for the comparison, only timestamps and file size.

This is in addition to Tanis's suggestions:

Am I right that you just want to move the files from A to B, skip identical, and then delete whatever is left in A? Or is it more complicated?

Opus provides a couple of features that let you select the things which were skipped (useful in the case that you originally didn't select everything to be moved from one place to another).

You can add @nodeselect to the move command so that it leaves things selected (and thus the stuff left selected was the stuff that got skipped, since everything else is no longer there after being moved).

Alternatively, you should be able to use the command Select RESELECT after the move to re-select anything that's left.