Created attachment 8341
There is a subtle bug in 'CatfishSearchMethod_Walk::run()' method - excluded dirs (~/.cache, ~/.gvfs and /dev) are not skipped - but the results are filtered again in 'CatfishSearchEngine::run()' so the result list is correct (although the search time is longer).
The problem is with the exclude logic:
Using os.walk() with bottom-up traverse order means that catfish will traverse insides of the directory before listing the dir itself,
Exclusion of dirs works by modifying the search results in-flight - line 'dirs[:] = [d for d in dirs if os.path.join(root, d) not in exclude]'.
As a result the code tries to exclude dirs it already went through.
This issue is also described on stack: https://stackoverflow.com/questions/31015780
I attached the patch to change the traversal order to top-down which fixes it but I am not sure why the traverse order was set to bottom-up in the first place. It is not the default option so I guess the author might have had something else in mind when writing this.
Filip Brygidyn referenced this bugreport in commit 61f49ecab9fd830a1a17e17d6134015b970f0305
Traverse dirs top-down in 'walk' method (bug #15206)
Good catch! Applied with the above commit. As for the bottom-up traversal, I don't recall there being a specific reason for doing this, so we'll go top-down for now.