The `-exec` is the best way to do this. If, for whatever reason, this is not an option, you can also read the results in a loop:

    find path_A -name "*AAA*" -print0 | 
        while IFS= read -r -d $'\0' file; do mv "$file" path_B; done

That's the safe way, it can deal with file names that contain spaces, newlines or other strange characters. A simpler way, but one that **fails unless your file names consist only of simple alphanumeric characters**, is

    mv $(find path_A -name "*AAA*") path_B

But use the while loop.