如何使用‘cp’命令排除特定目录?
- 2024-10-25 08:42:00
- admin 原创
- 76
问题描述:
我想复制目录中除特定子目录中的某些文件之外的所有文件。我注意到该cp
命令没有该--exclude
选项。那么,我该如何实现呢?
解决方案 1:
rsync
快速又简单:
rsync -av --progress sourcefolder /destinationfolder --exclude thefoldertoexclude
可以--exclude
多次使用。
rsync -av --progress sourcefolder /destinationfolder --exclude thefoldertoexclude --exclude anotherfoldertoexclude
thefoldertoexclude
注意,选项后的目录--exclude
是相对于的sourcefolder
,即sourcefolder/thefoldertoexclude
。
您还可以添加-n
试运行来查看在执行实际操作之前将复制什么,如果一切正常,则-n
从命令行中删除。
解决方案 2:
好吧,如果每个 unix-ish 文件实用程序(如 cp、mv、rm、tar、rsync、scp 等)都必须排除某些文件名模式,那么就会产生巨大的重复工作。相反,这些事情可以作为globbing的一部分来完成,即由您的 shell 来完成。
狂欢
man 1 bash
,/
extglob。
例子:
$ shopt -s extglob
$回显图像/*
图片/004.bmp 图片/033.jpg 图片/1276338351183.jpg 图片/2252.png
$ 回显图像/!(*.jpg)
图片/004.bmp 图片/2252.png
因此,您只需将模式放入 中!()
,它就会否定匹配。模式可以任意复杂,从枚举单个路径开始(如 Vanwaril 在另一个答案中所示):!(filename1|path2|etc3)
,到带有星号和字符类的正则表达式。有关详细信息,请参阅手册页。
嘚
=
man 1 zshexpn
,/
文件名生成。
你可以setopt KSH_GLOB
使用类似 bash 的模式。或者,
% 设置选项 EXTENDED_GLOB
%回声图像/*
图片/004.bmp 图片/033.jpg 图片/1276338351183.jpg 图片/2252.png
%回显图像/*~*.jpg
图片/004.bmp 图片/2252.png
因此x~y
匹配 pattern x
,但排除 pattern y
。再次重申,有关完整详细信息,请参阅手册页。
魚新!
fish shell对此有一个更漂亮的答案:
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD