将文件从一个路径复制到另一个路径(.zip 文件除外)

将文件从一个路径复制到另一个路径(.zip 文件除外)

我需要将所有文件从一个 UNIX 路径复制到同一服务器内的另一个路径。但是,我想在复制时排除一些 .zip 文件。我怎样才能使用CP命令选项?

答案1

不确定是否可以仅使用cp/globbing 但使用find/exec 来做到这一点:

find /first/path/ -type f -not -name '*.zip' -exec cp {} /second/path/ \;

为了避免递归,您可以添加maxdepth选项:

find /first/path/ -maxdepth 1 -type f -not -name '*.zip' -exec cp {} /second/path/ \;

或者,您可以将所有内容从源复制到目标,然后检查并删除所有 .zip 文件:

cp -R /first/path/ /second/path/ && find /second/path -type f -name '*.zip' -exec rm {} \;

答案2

一个简单的解决方案是将 .zip 文件移开目录MV,将余数复制为CP,然后使用 mv 和 将 .zip 文件恢复到其原始位置目录

cd SOURCE && mkdir ~/dELETEmE && mv *.zip ~/dELETEmE && cp * DESTINATION  
cd ~/dELETEmE && mv * SOURCE && cd .. && rmdir dELETEmE  

答案3

不知道是否有必要使用 only cp,但如果使用 bash 并确保您的文件名称中没有空格,也许像这样?

在你的源路径里面

cp $(ls | grep -v *.zip) /destination/path

相关内容