
在linux系统中复制文件我们可以使用cp或copy命令了,我们要复制文件或目录都可以使用它们两来完成哦,下面我来给大家介绍cp或copy命令与复制目录到指定目录的命令吧。 copy命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,同MSDOS下的copy命令一样,功能十分强大。
语法: cp [选项] 源文件或目录 目标文件或目录 说明:该命令把指定的源文件复制到目标文件或把多个源文件复制到目标目录中。
该命令的各选项含义如下: - a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录,其作用等于dpR选项的组合。 - d 拷贝时保留链接。 - f 删除已经存在的目标文件而不提示。 - i 和f选项相反,在覆盖目标文件之前将给出提示要求用户确认。回答y时目标文件将被覆盖,是交互式拷贝。 - p 此时cp除复制源文件的内容外,还将把其修改时间和访问权限也复制到新文件中。 - r 若给出的源文件是一目录文件,此时cp将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名。 - l 不作拷贝,只是链接文件。
需要说明的是,为防止用户在不经意的情况下用cp命令破坏另一个文件,如用户指定的目标文件名已存在,用cp命令拷贝文件后,这个文件就会被新源文件覆盖,因此,建议用户在使用cp命令拷贝文件时,最好使用i选项。
例1 复制指定目录下的全部文件到另一个目录中 文件及目录的复制是经常要用到的。linux下进行复制的命令为cp。 假设复制源目录 为 dir1 ,目标目录为dir2。怎样才能将dir1下所有文件复制到dir2下了 如果dir2目录不存在,则可以直接使用 cp -r dir1 dir2 即可。 如果dir2目录已存在,则需要使用 cp -r dir1/. dir2 如果这时使用cp -r dir1 dir2,则也会将dir1目录复制到dir2中,明显不符合要求。 ps:dir1、dir2改成对应的目录路径即可。
例2 复制指定文件到指定文件夹 首先建立一个用于测试的目录,用'tree'命令查看其结构如下所示: 可见,目录中主要包含用于测试的*.txt文件和用于充当炮灰的*。tes文件 目标是保持当前的目录结构,只把txt文件复制出来
方法一:当不需要的文件类型较为单一时,可以通过完全复制然后删除指定类型的文件完成 Step1 使用命令 cp -r test/ test2 将测试目录test下所有内容完全复制到test2,此时树形结构如下图 Step2 组合使用find及xargs,将*.tes文件删除 xargs是给命令传递参数的一个过滤器,可以将前一个命令产生的输出作为后一个命令的参数 命令find test2/ -name '*.tes' |xargs rm -rf, 即将find产生的输出(test2目录下的所有tes文件),作为rm的参数,从而完全删除 实际效果如图所示 适用场景举例:把项目文件备份,要去除其中的.svn文件,可以采用这种方式
方法二:需要的文件为单一类型,带目录结构复制 这种情况下可以使用tar命令将指定类型的文件打包,然后解包,同样需要组合使用find和xargs Step1 建立目录test3 mkdir test3 Step2 将指定类型文件带目录结构打包 find test/ -name '*.txt' |xargs tar czf test3.tgz Step3 解包到目录test3 tar zxvf test3.tgz -C test3
文件目录路径为 /aaa/bbb/ccc要拷贝到目录 /ddd/
使用命令 # rsync -avxR /aaa/ /ddd/
结果是 /ddd/aaa/bbb/ccc --保存原有目录结构
下载一个程序源代码,编译并且安装的时候,如果不特别指定安装的程序路径,那么默认会将程序相关的文件安装到这个目录的对应目录下。例如,安装的程序可执行文件被安装(安装实质就是复制到了/usr/local/bin下面,此程序(可执行文件所需要依赖的库文件被安装到了/usr/local/lib目录下,被安装的软件如果是某个开发库(例如Qt,Gtk等那么相应的头文件可能就被安装到了/usr/local/include中等等。也就是说,这个目录存放的内容,一般都是我们后来自己安装的软件的默认路径,如果择了这个默认路径作为软件的安装路径,被安装的软件的所文件都限制在这个目录中,其中的子目录就相应于根目录的子目录。/proc特殊文件目录:
这是一个特殊的目录,它同样是一个虚拟文件系统。通过这个目录下的各个文件,可以查看系统的内核信息。
/opt保留的文件目录:
一些自定义软件包或者第三方工具,就可以安装在这里。
/mnt文件系统或设备的通用挂载点:
这个目录一般是用于存放挂载储存设备的挂载目录的,比如磁盘,光驱,网络文件系统等,当我们需要挂载某个磁盘设备的时候,可以把磁盘设备挂载到这个目录上去,这样我们可以直接通过访问这个目录来访问那个磁盘了。可以在/mnt目录下面多建立几个子目录,挂载的时候挂载到这些子目录上面,也可以在任意位置设置挂在点,但是不建议这么做。
/media挂载的媒体设备目录:
挂载的媒体设备目录,一般可移动设备挂载到这里,例如cdrom,loppy和cdrecord等。
/var内容经常变化的目录:
此目录下文件的大小可能会改变,如缓冲文件,日志文件,缓存文件,等一般都存放在这里。
/tmp临时文件目录:
该目录存放系统中的一些临时文件,文件可能会被系统自动清空。的系统直接把tmpfs类型的文件系统挂载到这个目录上,tmpfs文件系统由linux内核支持,在这个文件系统中的数据,实际上是内存中的,由于内存的数据断电易失,当系统重新启动的时候我们就会发现这个目录被清空了。
/lost+found恢复文件存放的位置:
当系统崩溃的时候,在系统修复过程中需要恢复的文件,可能就会在这里被找到了,这个目录一般为空。
以上目录,是最常见的重要目录。其中,有些目录初学者容易混淆,这里简单区分一下:
/bin,/sbin与/usr/bin,/usr/sbin:
/bin一般存放对于用户和系统来说“必须”的程序(二进制文件)。
/sbin一般存放用于系统管理的“必需”的程序(二进制文件,一般普通用户不会使用,根用户使用)。
/usr/bin一般存放的只是对用户和系统来说“不是必需的”程序(二进制文件)。
/usr/sbin一般存放用于系统管理的系统管理的不是必需的程序(二进制文件)。
/lib与/usr/lib:
/lib和/usr/lib的区别类似/bin,/sbin与/usr/bin,/usr/sbin。
/lib一般存放对于用户和系统来说“必须”的库(二进制文件)。
/usr/lib一般存放的只是对用户和系统来说“不是必需的”库(二进制文件)。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)