安全起见,拷贝为先 - cp
.. _linux_cp_beginner:
.. note::
昔去雪如花,今来花似雪。
范云《别诗》
cp命令很简单,字面的意思,copy的缩写,意指拷贝数据。
官方含义为:
cp - copy files and directories
– 拷贝文件和文件夹。
命令格式
简单的格式如下所示,cp后面跟上选项,然后是SRC,最后是DEST。
1 | $ cp [option]... SOURCE... DIRECTORY |
下面说几个最常用的选项实例。
- -a:保留链接、文件属性,并复制目录下的所有内容,类似于等于dpr参数组合
- -d:复制时保留链接
- -f:覆盖已经存在的目标文件而不给出提示
- -i:与-f选项相反,要求用户确认是否覆盖
- -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件
- -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件
首先假设有两个文件夹dir1和dir2,里面的内容如下所示:
1 | dir1 |
详细信息如下所示:
1 | $ ll * |
cp最常用的选项如下所示:
i: 覆盖一个已经存在的文件前,提示用户进行确认r:递归地复制目录及其内容,复制目录的时候必须使用这个参数u:只复制不存在或者更新的文件v:复制文件时,显示复制信息
组合rv - 可以拷贝文件或文件夹
这个在显示复制信息的时候,也可以复制目录
1 | $ cp -rv dir1/* dir2/ |
拷贝时提示确认
这个参数在使用rm的时候已经记得使用,不然就像rm -rf /一样,一个公司没有了。
1 | $ cp -i dir1/* dir2/ |
这个选项在文件超级多时候,慎用!!
只拷贝不存在或更新的文件
u表示update,也就是从一个目录拷贝到另外一个目录时,只会复制那些不存在或者目标目录相应文件的更新文件。
执行下面的命令:
1 | $ cp -u dir1/* dir2/ |
可以得到:
1 | $ ll * |
如何用cp拷贝指定序号的文件
现在有文件夹filename,内有文档,名字是从1.txt, 2.txt, 3.txt 一直到9999.txt,10000.txt,现在希望从第N组数据即N.txt到第M组数据M.txt的文件拷贝到别的文件夹中,方法如下:
1 | $ cp {N..M}.txt newfilename/ |
这个方法可是相当的赞呀(≧▽≦)/,基本可以秒掉大多数的GUI程序了。