首页 > 系统相关 >linux cp 命令详解

linux cp 命令详解

时间:2023-09-30 10:55:05浏览次数:35  
标签:文件 mv 源文件 命令 详解 linux cp 目录

如何在Linux下拷贝一个目录呢?这好像是再简单不过的问题了。

 

比如要把/home/usera拷贝到/mnt/temp,首先想到的就是

 

cp -R /home/usera/* /mnt/temp

 

但是这样有一个问题,/home/usera下的隐藏文件都不会被拷贝,子目录下的隐藏文件倒是会的。

 

那如何才是正确的方法呢?有人说用-a选项,有人说用find加管道。

其实没这么复杂,Google了之后,学了一招。原来只有用“.”当前目录代替“*”就好了。

 

cp -R /home/usera/. /mnt/temp

直接使用cp命令即可,cp加-R参数才会复制子目录,不加此参数时只复制文件,使用:cp

 

源目录/*

目标目录

格式命令可实现复制文件夹下所有文件但不复制子目录目的。

cp命令说明:

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

语法

cp(选项)(参数)

选项

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

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

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

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

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

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

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

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

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

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

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

-v:详细显示命令执行的 *** 作。

参数

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

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

示例:

cp

aaa/*

/bbb

复制目录aaa下所有文件到/bbb目录下

cp命令

 

该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,就如同DOS下的copy命令一样,功能非常强大。

语法: cp [选项] 源文件或目录 目标文件或目录

说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。

该命令的各选项含义如下:

- a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。

- d 拷贝时保留链接。

- f 删除已经存在的目标文件而不提示。

- i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。

- p 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。

- r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。

- l 不作拷贝,只是链接文件。

需要说明的是,为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名是一个已存在的文件名,用cp命令拷贝文件后,这个文件就会被新拷贝的源文件覆盖,因此,建议用户在使用cp命令拷贝文件时,最好使用i选项。

$ cp - i exam1.c /usr/wang/shiyan1.c

该命令将文件exam1.c拷贝到/usr/wang 这个目录下,并改名为 shiyan1.c。若不希望重新命名,可以使用下面的命令:

$ cp exam1.c /usr/ wang/

$ cp - r /usr/xu/ /usr/liu/

将/usr/xu目录中的所有文件及其子目录拷贝到目录/usr/liu中。

 

mv命令

用户可以使用mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中。该命令如同DOS下的ren和move的组合。

语法:mv [选项] 源文件或目录 目标文件或目录

说明:视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。

命令中各选项的含义为:

- I 交互方式 *** 作。如果mv *** 作将导致对已存在的目标文件的覆盖,此时系统询问是否重写,要求用户回答y或n,这样可以避免误覆盖文件。

- f 禁止交互 *** 作。在mv *** 作要覆盖某已有的目标文件时不给任何指示,指定此选项后,i选项将不再起作用。

如果所给目标文件(不是目录)已存在,此时该文件的内容将被新文件覆盖。为防止用户在不经意的情况下用mv命令破坏另一个文件,建议用户在使用mv命令移动文件时,最好使用i选项。

需要注意的是,mv与cp的结果不同。mv好象文件“搬家”,文件个数并末增加,而cp对文件进行复制,文件个数增加了。

例1:将/usr/xu中的所有文件移到当前目录(用“.”表示)中:

$ mv /usr/xu/ * .

例2:将文件wch.txt重命名为wjz.doc

$ mv wch.txt wjz.doc

rm命令

在linux中创建文件很容易,系统中随时会有文件变得过时且毫无用处。用户可以用rm命令将其删除。该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。

rm命令的一般形式为:

rm [选项] 文件…

如果没有使用- r选项,则rm不会删除目录。

该命令的各选项含义如下:

- f 忽略不存在的文件,从不给出提示。

- r 指示rm将参数中列出的全部目录和子目录均递归地删除。

- i 进行交互式删除。

使用rm命令要格外小心。因为一旦一个文件被删除,它是不能被恢复的。例如,用户在输入cp,mv或其他命令时,不小心误输入了rm命令,当用户按了回车键并认识到自己的错误时,已经太晚了,文件已经没有了。为了防止此种情况的发生,可以使用rm命令中的 i选项来确认要删除的每个文件。如果用户输入y,文件将被删除。如果输入任何其他东西,文件将被保留。在下一个例子中,用户要删除文件test和example。然后会被要求对每个文件进行确认。用户最终决定删除example文件,保留test文件。

$ rm - ii test example

Remove test ?n

Remove example ?y

标签:文件,mv,源文件,命令,详解,linux,cp,目录
From: https://www.cnblogs.com/cxywxzj/p/17737670.html

相关文章

  • Linux-安装Opencv4
    下载进入opencv官网下载https://opencv.org/releases/选择sources下载相应版本的压缩包。解压文件,放到home/(用户名)/下。依赖安装安装Opencv的依赖打开终端,输入以下命令,安装最新的CMakesudoapt-getupdatesudoapt-getupgradesudoaptinstallcmake安装opencv依赖项......
  • The 2022 ICPC Asia Xi'an Regional Contest
    C.CloneRanran最优解一定是先复制,在做题。最多只需要复制大约30次,直接枚举即可#include<bits/stdc++.h>usingnamespacestd;#defineintlonglonginta,b,c;voidsolve(){cin>>a>>b>>c;intres=LLONG_MAX;for(inti=0,t=1;i......
  • 给linux安装线下程序
     一、从相关网站下载linux安装程序,一般是rpm和tgz结尾的文件二、使用下面方法将windows下载的文件上传到linux使用windows自带的powershell 其中自带了scp命令。这个命令可以实现与linux服务器的文件互传功能。他的语法是在windows的命令提示符下(注意不要远程到linux)从第......
  • linux tar命令
    一、Linux操作.tgz文件1.解压.tgz文件:(1)解压到当前文件夹命令:tarzxvf文件名.tgz-C./eg:tarzxvfdemo.tgz-C./(2)解压到指定文件夹下命令:tarzxvf文件名.tgz-C/指定路径eg:解压到家目录:tarzxvfsimple-examples.tgz-C/Home二、Linux下操......
  • Linux技术博客第一周
    这周是我们学习Linux的第一周,在学习Linux之前,我们先来了解云计算。云计算是基于互联网的相关服务的增加、使用和交付模式,通常涉及通过互联网来虚拟化资源。云计算通过网络连接的方式对计算资源进行统一的管理和调度,构建一个计算资源池向用户按需提供服务。然后我们来学习Windows......
  • Linux脚本扩展
    《Linux脚本基础扩展》  在之前的!《Linuxshell脚本基础知识》中,介绍了编写脚本的基础语法知识;现根据B站教程,对脚本编写实践部分进行总结;1.编写脚本,遍历目录下的所有txt文件,且将文件做备份,备份的格式为源文件名后缀增加日期;如:a.txt备份为a.txt_20230122#!bin/bash#author:......
  • 【rk356x】Linux Cmake如何进行交叉编译
    compiler.arm.cmakeSET(GCC_PATH/work/xxx/buildroot/output/rockchip/host/bin)SET(toolpathprefix${GCC_PATH}/aarch64-buildroot-linux-gnu-)set(libusb_path/work/xxx/libusb/install/lib/pkgconfig/libusb-1.0.pc)SET(CMAKE_C_COMPILER${toolpathprefix}gcc)SET......
  • 2022 China Collegiate Programming Contest (CCPC) Mianyang Onsite
    Preface久违地VP一场,由于CCPC桂林在即因此最近就自主VP一下去年的CCPC这场打的时候全队不在状态,签完到后我就因为A题一个cornercase没考虑到卡了快两个小时然后好不容易搞过去徐神上来有狂WAE题,最后也是喜提+11后面写的D题也是需要特判,好家伙又是快到比赛结束才看出来最后......
  • linux的管道符
    前言:之前一篇写linux管道符的博客丢失了,今天做题又遇到了,顺便再写一遍1.1管道符的作用再使用linux命令时,如果我们想一行执行多条命令或者有条件的执行下一条命令,这时我们就需要用到linux管道符了1.2;对于;,其使用格式为command1;command2用;隔开两个命令,依次执行,无论第一......
  • Linux Centos7 虚拟环境安装Redis教程(超详细)
    一、Redis的介绍1、基于内存或持久化的日志型、key-value型的Nosql数据库2、Redis六大特性:速度快、广泛的语言支持、持久化、多种数据结构、主从复制、高可用与分布式。二、Redis安装下载1、官网下载官网:https://redis.io/download/选择Redhat/Centos7下载tar.gz压缩包......