Linux 下mv和cp命令

注意事项:mv与cp的结果不一样,mv好像文件“搬家”,文件个数并未增长。而cp对文件进行复制,文件个数增长了。spa

1、cp命令递归

cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它能够将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复制多个文件,当一次复制多个文件时,目标文件参数必须是一个已经存在的目录,不然将出现错误。ip

语法:get

cp(选项)(参数)file

选项:权限

-a:此参数的效果和同时指定"-dpR"参数相同;语法

-d:当复制符号链接时,把目标文件或目录也创建为符号链接,并指向与源文件或目录链接的原始文件或目录;方法

-f:强行复制文件或目录,不论目标文件或目录是否已存在;命名

-i:覆盖既有文件以前先询问用户;移动

-l:对源文件创建硬链接,而非复制文件;

-p:保留源文件或目录的属性;

-R/r:递归处理,将指定目录下的全部文件与子目录一并处理;

-s:对源文件创建符号链接,而非复制文件;

-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;

-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;

-b:覆盖已存在的文件目标前将目标文件备份;

-v:详细显示命令执行的操做。

参数:

源文件:制定源文件列表。默认状况下,cp命令不能复制目录,若是要复制目录,则必须使用-R选项;

目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。

实例:

若是把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中全部参数既能够是绝对路径名,也能够是相对路径名。一般会用到.或..的形式。

例如,下面的命令将指定文件复制到当前目录下:

cp ../mary/homework/assign .

全部目标文件指定的目录必须是己经存在的,cp命令不能建立目录。若是没有文件复制的权限,则系统会显示出错信息。

 

将文件file复制到目录/usr/men/tmp下,并更名为file1:

cp file /usr/men/tmp/file1

 

将目录/usr/men下的全部文件及其子目录复制到目录/usr/zh中:

cp -r /usr/men /usr/zh

 

交互式地将目录/usr/men中的以m打头的全部.c文件复制到目录/usr/zh中:

cp -i /usr/men m*.c /usr/zh

 

在Linux下使用cp命令复制文件时候,有时候会须要覆盖一些同名文件,覆盖文件的时候都会有提示:须要不停的按Y来肯定执行覆盖。此时能够采用如下方法:

cp aaa/* /bbb

复制目录aaa下全部到/bbb目录下,这时若是/bbb目录下有和aaa同名的文件,须要按Y来确认而且会略过aaa目录下的子目录。

cp -r aaa/* /bbb

此次依然须要按Y来确认操做,可是没有忽略子目录。

cp -r -a aaa/* /bbb

依然须要按Y来确认操做,而且把aaa目录以及子目录和文件属性也传递到了/bbb。

\cp -r -a aaa/* /bbb

成功,没有提示按Y、传递了目录属性、没有略过目录。

 

2、mv命令

mv命令用来对文件或目录从新命名,或者将文件从一个目录移到另外一个目录中。source表示源文件或目录,target表示目标文件或目录。若是将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。

 

 mv命令能够用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。源文件被移至目标文件有两种不一样的结果:

一、若是目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。

二、若是目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。若是源文件和目标文件在同一个目录下,mv的做用就是改文件名。当目标文件是目录文件时,源文件或目录参数能够有多个,则全部的源文件都会被移至目标文件中。全部移到该目录下的文件都将保留之前的文件名。

语法:

mv(选项)(参数)

选项:

--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;

-b:当文件存在时,覆盖前,为其建立一个备份;

-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;

-i:交互式操做,覆盖前先行询问用户,若是源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样能够避免误将文件覆盖。

--strip-trailing-slashes:删除源文件中的斜杠“/”;

-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;

--target-directory=<目录>:指定源文件要移动到目标目录;

-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操做。

参数:

源文件:源文件列表。

目标文件:若是“目标文件”是文件名则在移动文件的同时,将其更名为“目标文件”;若是“目标文件”是目录名则将源文件移动到“目标文件”下。

实例:

将文件ex3更名为new1:

mv ex3 new1

将目录/usr/men中的全部文件移到当前目录(用.表示)中:

mv /usr/men/* .