Linux :: 【基础指令篇 :: 文件及目录操作:(7)】:: cp:指定文件或目录的拷贝及指定拷贝到指定路径(与重命名)

前言:本篇是 Linux 基本操作篇章的内容!
笔者使用的环境是基于腾讯云服务器:CentOS 7.6 64bit。


学习集:


目录索引:
1. 基本语法及功能
2. 常用可选项说明
3. 文件基本拷贝操作
- - 3.1 指定文件拷贝到当前目录
- - 3.2 拷贝指定文件到指定目录
- - 3.3 拷贝指定文件到上级目录
4. 目录拷贝基本操作
- - 4.1 测试直接拷贝目录
- - 4.2 可选项 [-r] 实现目录拷贝
- - 4.3 拷贝目录及文件
5. 相关文章或系列推荐


1. 基本语法及功能

语法:

  • cp [选项] 源文件或目录 目标文件或目录(已存在!)
  • 目标文件可以赋予新的名字!

功能:

  • 复制文件或目录

说明:

  • cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。

2. 常用可选项说明

  • -f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在
  • -i 或 --interactive 覆盖文件之前先询问用户
  • -r 递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理
  • -R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理

3. 常用选项及测试

3.1 指定文件拷贝到当前目录
[Mortal@VM-12-16-centos ~]$ ls
StudyingOrder_Linux  test1  test2  test3  test_mkdir
[Mortal@VM-12-16-centos ~]$ mkdir test_cp
[Mortal@VM-12-16-centos ~]$ ls
StudyingOrder_Linux  test1  test2  test3  test_cp  test_mkdir
[Mortal@VM-12-16-centos ~]$ cd test_cp

/* 同时创建两个目录一个源文件所在目录,一个拷贝目的地所在目录 */
[Mortal@VM-12-16-centos test_cp]$ mkdir origin_dir destination_dir
[Mortal@VM-12-16-centos test_cp]$ ls
destination_dir  origin_dir

/* 创建源文件并用重定向方式写入信息(以后会介绍) */
/* 创建源文件 */
[Mortal@VM-12-16-centos test_cp]$ touch origin_dir/test_origin.txt
/* 用重定向方式写入信息 */
[Mortal@VM-12-16-centos test_cp]$ echo "hello" > origin_dir/test_origin.txt 

/* 执行拷贝操作:不指定拷贝目录即表示拷贝到当前所在目录 */
[Mortal@VM-12-16-centos test_cp]$ cp origin_dir/test_origin.txt copy.txt

[Mortal@VM-12-16-centos test_cp]$ ls
copy.txt  destination_dir  origin_dir

/* 查看拷贝文件的内容! */
[Mortal@VM-12-16-centos test_cp]$ cat copy.txt 
hello

3.2 拷贝指定文件到指定目录
/*
	将 origin_dir 目录下的 test_origin.txt 文件
    拷贝到:destination_dir 目录下!
*/
/* 操作指令: */
[Mortal@VM-12-16-centos test_cp]$ cp origin_dir/test_origin.txt destination_dir/copy.txt

/* 查看拷贝文件内容 */
[Mortal@VM-12-16-centos test_cp]$ cat destination_dir/copy.txt 
hello

3.3 拷贝指定文件到上级目录
/* 查看当前所在路径 */
[Mortal@VM-12-16-centos test_cp]$ pwd
/home/Mortal/test_cp

/* 执行操作: */
[Mortal@VM-12-16-centos test_cp]$ cp origin_dir/test_origin.txt ../copy.txt

/* 返回上级并查看目录: */
[Mortal@VM-12-16-centos test_cp]$ cd ..
[Mortal@VM-12-16-centos ~]$ pwd
/home/Mortal

/* 查看是否存在拷贝文件 */
[Mortal@VM-12-16-centos ~]$ ls
copy.txt(这)  StudyingOrder_Linux  test1  test2  test3  test_cp  test_mkdir

4. 修改文件创建时间

4.1 基本操作测试

结论:不能直接拷贝目录!

[Mortal@VM-12-16-centos test_cp]$ ls
copy.txt  destination_dir  origin_dir

[Mortal@VM-12-16-centos test_cp]$ cp origin_dir origin_dir_backup
cp: omitting directory ‘origin_dir’		

/* 无法直接操作非空目录 */

/* 测试空目录拷贝 */
[Mortal@VM-12-16-centos test_cp]$ mkdir test
[Mortal@VM-12-16-centos test_cp]$ ls
copy.txt  destination_dir  origin_dir  test
[Mortal@VM-12-16-centos test_cp]$ cp test test_backup
cp: omitting directory ‘test’

4.2 可选项 [-r] 实现目录拷贝

结论:使用 -r 可以使用目录的拷贝,同时会拷贝非空目录下的文件!


提问:是否会拷贝非空目录下的单目录 / 多级目录?

/* 执行拷贝:空目录! */
[Mortal@VM-12-16-centos test_cp]$ cp -r test test_backup
[Mortal@VM-12-16-centos test_cp]$ ls
copy.txt  destination_dir  origin_dir  test  test_backup

/* 执行拷贝:非空目录! */
[Mortal@VM-12-16-centos test_cp]$ cp -r origin_dir origin_dir_backup
[Mortal@VM-12-16-centos test_cp]$ ls
copy.txt  destination_dir  origin_dir  origin_dir_backup  test  test_backup

/* 查看目录下子文件是否拷贝 */
[Mortal@VM-12-16-centos test_cp]$ ls origin_dir_backup/
test_origin.txt
[Mortal@VM-12-16-centos test_cp]$ ls origin_dir
test_origin.txt

4.3 拷贝目录及文件

回答问题:是否会拷贝非空目录下的单目录 / 多级目录?

答:使用:cp -r … 可以直接拷贝指定目录下的全部内容!

[Mortal@VM-12-16-centos test_cp]$ rm -r test_backup

[Mortal@VM-12-16-centos test_cp]$ mkdir -p test/a/aa/aaa
[Mortal@VM-12-16-centos test_cp]$ touch test/t1.txt
[Mortal@VM-12-16-centos test_cp]$ touch test/a/aa/aaa/t2.txt
[Mortal@VM-12-16-centos test_cp]$ tree test
test
|-- a
|   `-- aa
|       `-- aaa
|           `-- t2.txt
`-- t1.txt

3 directories, 2 files
[Mortal@VM-12-16-centos test_cp]$ cp -r test test_backup
[Mortal@VM-12-16-centos test_cp]$ ls
copy.txt  destination_dir  origin_dir  origin_dir_backup  test  test_backup
[Mortal@VM-12-16-centos test_cp]$ tree test_backup/
test_backup/
|-- a
|   `-- aa
|       `-- aaa
|           `-- t2.txt
`-- t1.txt

3 directories, 2 files

5. 相关文章或系列推荐

1. Linux 学习目录合集


2. Linux :: 【基础指令篇 :: 文件及目录操作:(4)】:: mkdir :: 创建目录:指定路径单个目录创建及一次性创建多级目录
3. Linux :: 【基础指令篇 :: 文件及目录操作:(5)】:: touch:创建普通文件、修改文件创建时间及其他基本操作
4. Linux :: 【基础指令篇 :: 文件及目录操作:(6)】:: rmidr / rm:删除空目录、删除非空目录及删除文件指令


猜你喜欢

转载自blog.csdn.net/weixin_53202576/article/details/130958423