linux复制当前目录到其子目录下

本文介绍了一种在Linux环境下,如何将当前目录下除特定文件夹外的所有内容复制到该文件夹内的方法。通过使用ls、grep和xargs命令组合,可以有效避免自我复制错误,并包含隐藏文件的复制选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设有以下目录结构,需要把当前目录.下所有文件及文件夹(dst除外)复制到其子目录dst文件夹下:

tree
.
├── dst
├── file1.txt
└── src
    ├── dir
    │   └── file3.txt
    └── file2.txt

不能直接使用cp -a . dst

cp: cannot copy a directory, ‘.’, into itself, ‘dst/.’

可行的一种方式:

ls | grep -v '^dst$' | xargs cp -at dst

# grep -v:正则匹配取反
# cp -t:  --target-directory=dir  表示将所有参数指定的源目录/文件复制到目标目录下
# cp -a:  --archive			等同于 cp -dR --preserve=all

执行结果:

tree
.
├── dst
│   ├── file1.txt
│   └── src
│       ├── dir
│       │   └── file3.txt
│       └── file2.txt
├── file1.txt
└── src
    ├── dir
    │   └── file3.txt
    └── file2.txt

如果当前目录下有.开头的隐藏文件也需要复制,则要使用

ls -a | grep -v '^\(\.\{1,2\}\|dst\)$' | xargs cp -at dst

注:需要把当前目录.和上级目录..也排除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值