You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为cp命令添加过滤条件,仅复制指定日期范围的文件

只复制指定日期范围文件的cp命令用法

好的,针对你只想复制2020年相关文件的需求,这里有几个实用的方案可以实现:

方法一:利用Shell通配符直接匹配

这是最简洁的方式,因为你的目标目录都是以date=2020开头的,直接用通配符匹配这些目录即可:

cp --recursive source_path/date=2020* dest_path/

这样执行后,Shell会自动把所有符合date=2020*规则的子目录(也就是date=20200101date=20200102)作为源,递归复制到dest_path下,还会保留原有的目录结构哦。

如果担心不小心覆盖目标目录里已有的文件,可以加上-n参数(不覆盖现有文件)或者-i参数(覆盖前交互式询问):

cp --recursive -n source_path/date=2020* dest_path/

方法二:用find命令实现更灵活的过滤

如果之后你需要更复杂的过滤规则(比如特定日期区间),find命令会更灵活。针对当前需求,命令如下:

find source_path -path "*/date=2020*" -exec cp --parents {} dest_path/ \;
  • -path "*/date=2020*":用来匹配所有路径中包含date=2020的文件和目录;
  • --parents:让cp保留文件的相对路径,这样复制后dest_path下会和源目录一样,有date=20200101date=20200102这些子目录;
  • -exec ... \;:把find找到的每个结果传递给cp命令执行。

内容的提问来源于stack exchange,提问作者Ajay Chinni

火山引擎 最新活动