Linux命令(二)移动、拷贝、删除命令总结

mv(移动命令)

mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。

语法

mv(选项)(参数)

选项

–backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
–strip-trailing-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
–target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

参数

源文件:源文件列表。
目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;如果“目标文件”是目录名则将源文件移动到“目标文件”下。

实例
  • 将目录/usr/men中的所有文件移到当前目录(用.表示)中:
    mv /usr/men/* .

  • 移动文件
    mv file_1.txt /home/office/

  • 移动多个文件
    mv file_2.txt file_3.txt file_4.txt /home/office/
    mv *.txt /home/office/

  • 移动目录
    mv directory_1/ /home/office/

  • 重命名文件或目录
    mv file_1.txt file_2.txt # 将文件file_1.txt改名为file_2.txt

  • 重命名目录
    mv directory_1/ directory_2/

  • 打印移动信息
    mv -v *.txt /home/office

  • 提示是否覆盖文件
    mv -i file_1.txt /home/office

  • 源文件比目标文件新时才执行更新
    mv -uv *.txt /home/office

  • 不要覆盖任何已存在的文件
    mv -vn *.txt /home/office

  • 复制时创建备份
    mv -bv *.txt /home/office

  • 无条件覆盖已经存在的文件
    mv -f *.txt /home/office

cp(拷贝命令)

cp命令 用来将一个或多个源文件或者目录复制到指定的目的文件或目录。

语法

cp(选项)(参数)

选项

-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。

参数

源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;
目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。

实例
  • 下面的第一行中是 cp 命令和具体的参数(-r 是“递归”, -u 是“更新”,-v 是“详细”)。接下来的三行显示被复制文件的信息,最后一行显示命令行提示符。这样,只拷贝新的文件到我的存储设备上,我就使用 cp 的“更新”和“详细”选项。
    通常来说,参数 -r 也可用更详细的风格 --recursive。但是以简短的方式,也可以这么连用 -ruv。
    cp -r -u -v /usr/men/tmp ~/men/tmp

  • 版本备份 --backup=numbered 参数意思为“我要做个备份,而且是带编号的连续备份”。所以一个备份就是 1 号,第二个就是 2 号,等等。

$ cp --force --backup=numbered test1.py test1.py
$ ls
test1.py test1.py.~1~ test1.py.~2~
  • 如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。此命令中所有参数既可以是绝对路径名,也可以是相对路径名。通常会用到点.或点点…的形式。例如,下面的命令将指定文件复制到当前目录下:
    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来确定执行覆盖。文件数量不多还好,但是要是几百个估计按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、传递了目录属性、没有略过目录。
  • 递归强制复制目录到指定目录中覆盖已存在文件
    (1)cp -rfb ./* …/backup
    将当前目录下所有文件,复制到当前目录的兄弟目录 backup 文件夹中
    拷贝目录下的隐藏文件如 .babelrc
    (2)cp -r aaa/.* ./bbb
    将 aaa 目录下的,所有.开头的文件,复制到 bbb 目录中。
    (3)cp -a aaa ./bbb/
    记住后面目录最好的’/’ 带上 -a 参数

rm(删除命令)

语法:

rm [fir] 文件或目录

参数:

-f:强制删除
-i:交互模式,在删除前询问用户是否操作
-r:递归删除,常用在目录的删除

实例
  • 如删除/test目录下的file1文件,可以输入以下命令:
    rm -i /test/file1
  • 删除/test目录,可以输入以下命令
    rm -rf test/
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值