Если вы можете решить эту проблему без Perl, вам следует проверить rsync
. Он доступен в Unix-подобных системах, в Windows через Cygwin и, возможно, в качестве отдельного инструмента в Windows. Он будет делать то, что вам нужно, и многое другое.
rsync -a -v --exclude='.*' foo/ bar/
Если вы не являетесь владельцем всех файлов, используйте -rOlt
вместо -a
.