我需要将所有文件从一个 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
答案3
不知道是否有必要使用 only cp
,但如果使用 bash 并确保您的文件名称中没有空格,也许像这样?
在你的源路径里面
cp $(ls | grep -v *.zip) /destination/path