插件窝 干货文章 linux常用命令cp 略过目录什么意思

linux常用命令cp 略过目录什么意思

目录 路径 文件 复制 759    来源:    2025-04-04

在Linux中,cp命令默认会递归复制目录及其内容。若想"略过目录"(即不复制目录本身及其内容),有以下几种方法:


1. 使用 -r/--recursive 的相反操作

cp命令没有直接跳过目录的参数,但可以通过组合其他命令实现:

# 复制当前目录下的所有文件(非目录),不包括子目录
cp * 目标路径/

注意:这会跳过隐藏文件(以.开头的文件),若需包含隐藏文件(仍排除目录):

shopt -s dotglob  # 让*匹配隐藏文件
cp * 目标路径/
shopt -u dotglob  # 恢复默认

2. 结合 find 命令

精确控制仅复制文件(排除目录):

find 源路径 -type f -exec cp {} 目标路径/ \;
  • -type f:仅匹配文件(排除目录)。
  • -exec:对找到的每个文件执行cp

3. 使用 rsync 工具

rsync 提供更灵活的排除选项:

rsync -av --exclude='*/' 源路径/ 目标路径/
  • --exclude='*/':跳过所有目录。
  • -a:归档模式(保留属性)。
  • 末尾的/表示复制目录内容而非目录本身。

4. 排除特定目录

若想复制目录但排除特定子目录:

cp -r --exclude='目录名' 源路径 目标路径

或使用rsync

rsync -av --exclude='目录名' 源路径/ 目标路径/

关键区别

方法 行为 适用场景
cp * 简单但忽略隐藏文件和目录 快速复制可见非目录文件
find + cp 精确复制所有文件(含隐藏文件) 需要严格排除目录时
rsync 灵活排除,支持复杂模式 需要高级控制或远程复制时

根据需求选择合适的方法即可。