一. 复制文件 - cp
语法: cp [选项] [源文件或目录] [目标文件或目录]
功能: 复制文件或目录.
常用选项:
-
-f
强行复制文件或目录, 不论目的文件或目录是否已经存在. -
-i
覆盖文件之前先询问用户. -
-r / -R
递归处理, 将指定目录下的文件与子目录一并处理.
源对象和目标对象都是文件
当源对象和目标对象都是文件时, 且目标文件不存在时, cp
命令会将源文件复制成一个新的目标文件, 并以目标对象文件名命名, 放置于当前工作目录下. 新文件在形式上就像全新的文件一样, 有新的修改时间.
新文件 test2
和 test1
的 修改时间并不一样.
如果目标文件已经存在, 则 cp
命令可能并不会提醒你这一点. 最好加上 -i
选项, 强制 shell 询问是否要覆盖已有文件.
如果回答 y
, 则覆盖已有文件; 如果回答 n
, 则停止文件复制.
源对象是文件, 目标对象是目录 (现有目录)
将文件复制到现有目录中.
如果将文件复制到的目标目录不存在, 会产生报错信息.
提示: 先前的例子在目标目录名尾部加上了一个正斜线 ( / ) . 这表明 newidr 是一个目录而非文件. 这有助于表明目的, 而且在复制单个文件时非常重要. 如果没有使用正斜线, 同时子目录 newdir 又不存在, 就会产生麻烦. 在这种情况下, 试图将一个文件复制到 newdir 子目录反而会创建名为 newdir 的普通文件, 更是连错误消息都不会有. 因此, 记得在目标目录名尾部加上正斜线.
源对象和目标对象都是目录
cp
命令的 -R
选项功能强大. 可以用它在单个命令中递归地复制整个目录的内容.
在执行 cp -R
命令之前, 目录 dir 并不存在. 它是随着 cp -R
命令被创建的, 整个 newdir
目录中的内容都被复制到其中. 注意, 新的 dir
目录中的所有文件都有新的日期. dir
目录现在已经成为了 newdir
目录的完整副本.
也可以在 cp
命令中使用通配符复制一组文件.
二. 文件剪切并重命名 - mv
语法: mv [选项] [源文件或目录] [目标文件或目录]
功能: 剪切并重命名文件或目录.
常用选项:
-
-f
如果目标文件已经存在, 不会询问而直接覆盖. -
-i
若目标文件 (destination) 已经存在时, 就会询问是否覆盖.
在 Linux 中, mv
命令可以将文件和目录剪切或重命名或剪切并重命名.
源对象和目标对象都是文件
文件重命名.
注意, 移动文件会将文件名从 fall
更改为 fzll
, 但 inode 编号和时间戳保持不变. 这是因为 mv
只影响文件名.
文件剪切并重命名.
inode 编号和时间戳同样保持不变.
源对象是文件, 目标对象是目录 (现有目录)
文件剪切.
inode 编号和时间戳同样保持不变.
源对象和目标对象都是目录
目录重命名 (目标对象目录不存在) .
目录剪切 (目标对象目录存在) , 将源对象目录剪切到目标对象目录下, 即成为目标对象目录的子目录.
目录剪切并重命名.
提示: 和
cp
命令类似, 也可以在mv
命令中使用-i
选项. 这样在mv
试图覆盖已有的文件时会发出询问.