在我的Perl代码中,我需要将一个目录从一个位置复制到同一主机上的另一个位置,但要排除一些文件/模式(例如*.log, ./myDir/abc.cl)。 在所有平台上,用Perl完成这个任务的最佳方法是什么? 在Windows上,xcopy是一种解决方案。在Unix平台上,有没有办法用Perl来实现这个功能?
我认为你正在寻找rsync。它不是Perl,但它比任何你用Perl制作的东西都要好得多:
% rsync --exclude='*.log' --exclude='./myDir/abc.cl' SOURCE DEST
*.log
./myDir/abc.cl
% rsync --exclude-from=do_not_sync.txt SOURCE DEST
我会使用File::Find
,遍历每个文件,但不是在每个文件上调用File::Copy
的copy()
函数,而是先测试是否符合模式,如果符合就跳过next
。