Find files by pattern and copy to target location
If you want to recurse also into sub-folders, you should use os.walk:

import os
import shutil

def get_files_recursively(start_directory, filter_extension=None):
    for root, _, files in os.walk(start_directory):
        for file in files:
            if filter_extension is None or file.lower().endswith(filter_extension):
                yield os.path.join(root, file)

def selective_copy(source, target, file_extension=None):
    for file in get_files_recursively(source, file_extension):
        print(file)
        shutil.copy(file, target)
        print("The following file has been copied", file)

if __name__ == "__main__":
    selective_copy("/Users/my_user_name/Desktop/newPDFs",
                   "/Users/my_user_name/Desktop/oldPDFs",
                   ".pdf")


As stated in the documentation, this is actually faster than os.listdir since Python 3.5:


  This function now calls os.scandir() instead of os.listdir(), making
  it faster by reducing the number of calls to os.stat().


I also 


added a if __name__ == "__main__": guard to allow importing this module from another script without running the function
pulled the constants out into the calling code to make it re-usable
used is instead of != to compare to None
used str.endswith instead of a regular expression to avoid some overhead 
changed the names to adhere to Python's official style-guide, PEP8.