You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下仅复制文件至目标目录并清空原有内容的命令方案

解决Linux下指定文件复制并清空目标目录的问题

我来帮你搞定这个需求,分两种常用方法详细说明:

一、使用cp命令实现

要完成清空目标目录原有内容 + 仅复制源目录文件的操作,需要分两步执行:

  1. 先清空目标目录的所有内容(包括文件和子文件夹):
rm -rf ~/folder2/subfolder2/*

注意:-rf参数会强制删除所有内容,执行前请确认目标目录路径正确,避免误删重要文件。

  1. 再复制源目录中的所有文件(不含子文件夹)到目标目录:
cp ~/folder1/subfolder1/* ~/folder2/subfolder2/

如果源目录包含隐藏文件(以.开头的文件),上面的*不会匹配到它们。要包含隐藏文件的话,可以先开启shell的dotglob选项:

shopt -s dotglob
cp ~/folder1/subfolder1/* ~/folder2/subfolder2/

执行完后如果想关闭dotglob,可以运行shopt -u dotglob。

二、使用rsync命令实现

你之前遇到的错误是因为--delete参数需要配合递归相关的参数(-r或-d),但我们可以通过排除子目录的方式,既满足--delete的要求,又不复制子文件夹。

推荐的命令如下:

rsync -r --delete --exclude='*/' ~/folder1/subfolder1/ ~/folder2/subfolder2/

参数解释:

  • -r:开启递归模式(这是--delete必须的前提)
  • --exclude='*/':排除所有子目录,这样rsync只会处理源目录下的文件,不会进入子文件夹
  • --delete:删除目标目录中存在但源目录中没有的内容(包括文件和子文件夹),正好实现清空原有内容的效果
  • 源路径末尾的/:表示复制源目录内部的内容,而不是源目录本身,这一点很重要

这个命令的优势:

  • 自动处理隐藏文件,不需要额外设置
  • 如果源目录文件有更新,后续执行只会复制变化的文件,效率更高
  • 相比rm + cp的组合,更安全(比如如果源目录为空,rm -rf不会误删目标目录本身,而rsync --delete只会清空内容)

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:23:15