Created attachment 8341 proposed patch 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) https://git.xfce.org/apps/catfish/commit?id=61f49ecab9fd830a1a17e17d6134015b970f0305
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.