指点成金-最美分享吧

登录

linux下怎么把一个文件复制到另一个文件夹

佚名 举报

篇首语:本文由小编为大家整理,主要介绍了linux下怎么把一个文件复制到另一个文件夹相关的知识,希望对你有一定的参考价值。

1、linux复制指定目录下的全部文件到另一个目录中,复制指定目录下的全部文件到另一个目录中,文件及目录的复制是经常要用到的。linux下进行复制的命令为cp。

2、假设复制源目录 为 dir1 ,目标目录为dir2。怎样才能将dir1下所有文件复制到dir2下了。如果dir2目录不存在,则可以直接使用。

3、cp命令将源文件复制至目标文件,可将单个或多个源文件复制至目标目录。如果需要复制一个文件夹里的所有文件,可以使用通配符*,使用通配符可以匹配一个文件夹里的全部文件。

4、如果dir2目录已存在,这时使用cp -r dir1 dir2,则也会将dir1目录复制到dir2中,明显不符合要求。ps:dir1、dir2改成对应的目录路径即可。

5、对于刚开始使用LINUX系统的人来说,都不熟悉使用命令行,对于用命令行删除文件,这最基本的。

参考技术A cp 源文件或目录 目标文件或目录
如:cp aaa bbb
以下是帮助:
cp(copy)

功能说明:复制文件或目录。
语  法:cp [-abdfilpPrRsuvx][-S <备份字尾字符串>][-V <备份方式>][--help][--spares=<使用时机>][--version][源文件或目录][目标文件或目录] [目的目录]
补充说明:cp指令用在复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,而最后的目的地并非是一个已存在的目录,则会出现错误信息。
参  数: 
-a或--archive  此参数的效果和同时指定"-dpR"参数相同。  
-b或--backup  删除,覆盖目标文件之前的备份,备份文件会在字尾加上一个备份字符串。  
-d或--no-dereference  当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源 文件或目录连接的原始文件或目录。  
-f或--force  强行复制文件或目录,不论目标文件或目录是否已存在。  
-i或--interactive  覆盖既有文件之前先询问用户。  
-l或--link  对源文件建立硬连接,而非复制文件。  
-p或--preserve  保留源文件或目录的属性。  
-P或--parents  保留源文件或目录的路径。  
-r  递归处理,将指定目录下的文件与子目录一并处理。
-R或--recursive  递归处理,将指定目录下的所有文件与子目录一并处理。  
-s或--symbolic-link  对源文件建立符号连接,而非复制文件。  
-S<备份字尾字符串>或--suffix=<备份字尾字符串>  用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字尾字符串是符号"~"。  
-u或--update  使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在,才复制文件。  
-v或--verbose  显示指令执行过程。  
-V<备份方式>或--version-control=<备份方式>  用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这字符串不仅可用"-S"参数变更,当使用"-V"参数指定不同备份方式时,也会产生不同字尾的备份字串。  
-x或--one-file-system  复制的文件或目录存放的文件系统,必须与cp指令执行时所处的文件系统相同,否则不予复制。  
--help  在线帮助。  
--sparse=<使用时机>  设置保存稀疏文件的时机。
--version  显示版本信息。
参考技术B mv是移动命令,拷贝应该是cp -a aaa/ */bbb/ *代表bbb文件夹的上层路径,这种情况下,要保证当前目录在aaa的上层目录。 参考技术C cp 源文件路径 目标路径
上面的两个路径都可以是绝对路径或相对路径。
比如说,我要把etc目录下的passwd文件,复制到根目录
cp /etc/passwd /本回答被提问者采纳
参考技术D cp 原目标文件路径/文件名 目标路径
cp /home/test.txt /home/test/test.txt

linux中怎么复制文件夹里面内容到另一个文件夹。包括隐藏文件。

比如/home 和/aaa 把/home下的文件包括隐藏文件,复制到/aaa
我用cp -r /home /aaa 结果把整个/home复制到/aaa下了。
又用cp -r /home/* /aaa 结果隐藏文件又没复制过去。
我只想用一条命令。不要再用cp -r /home/.* /aaa
有人有办法吗?
还有就是如果不想把文件夹里面的“.”“..”两个复制过去,怎么办。
网上看到有人说用正则式,不过我刚接触linux,不是很懂。而且他上面的符号没标清楚,分不清楚单引号反引号。有简单点的吗?
/aaa不是空目录。 不是这样的,“.”“..”是每个文件夹都有,可是你如果/home/aaa 和/bbb 你用cp -rf /home/aaa/.* /bbb,那么由于“.”“..”和“-r”存在的原因-r是递归。就会把上级所有东西都复制。即,你会看到/bbb中有/home整个文件夹。 意思使这个,上面可能你们没理解清楚。 正则式是我看到一个和我问题相似的人的回答,他是只要复制隐藏文件,用grep的正则式是把“.”“..”过滤掉,就不会把上级目录也复制了。可懂?

还有就是如果不想把文件夹里面的“.”“..”两个复制过去,怎么办。

我晕..这个不是文件,而是本级目录标示和上级目录标示..在任意的目录里都有的..

另外,cp -rt /home /aaa是将所有文件全复制的,包含隐藏文件也可以.其中-t参数是拷贝所有源的参数到目标文件(但是其实不要这个也没多大区别).

正则表达式其实和批量处理差不多,就是一次处理所有满足参数设定的表达式.不会的话,也可以通过bash来进行这样的操作.

你现在的问题已经不是你原来题目的意思了.
你原来的题目是:比如/home 和/aaa 把/home下的文件包括隐藏文件,复制到/aaa
那么我的做法并没有问题.
然而你现在的问题非常针对这个文件夹的特点.由于/home目录夹下的一般性质都是一些隐藏类型的.bash之类的配置文件,但是如果你是想复制这个文件夹的内容,那根本不需要这么麻烦.
你的做法之所以不对是因为 .* 这个只能说明这里有.开头的所有字母.但是..这条也默认正确了.我认为,首先就要确定至少有2个字符,这个以一来, .[^.]* 这样就能表示了(当然我只是提出这个概念,因为我不太清楚怎么是非点的具体指令,但是这个意思应该是没有错,就是说,以.开头的,[^.]表示1个字符,而且是非.的字符(当然这条的写法是错的,我只是说这个概念),*表示有0个或者0个以上的任意字符串.如果照这条做法来说,以.和..这两个是肯定不符合要求的,这样的话,所有的隐藏文件都符合要求了.只不过,注释化的这个点使用`.`还是".",我不太清楚,平常用少.
参考技术A 不好意思,刚答错了,考虑了下:
看来真得得把. 和 .. 过滤掉才行

目前想到了两种简单的解决途经:
1.使用 ls -A 可以列出所有项目除了. ..
try : cd /home; cp `ls -A` /aaa -r

2.使用du -a 会列出所有项目除了. .. 路径及大小
try : cp `du -a /home|awk "print $2"|grep \/` /aaa -r本回答被提问者采纳
参考技术B cp -rfa /home/* /aaa
如果要复制权限的话 我想想 好像是加上, 你可man看一下参数
.是当前目录 ..是上层目录
算了我告诉你吧
-r 是复制目录
-f 是递归
-a 尽可能的保留文件结构和属性(权限)
参考技术C 你的/aaa目录是空的吗?

如果你的/aaa目录没有东西,删除它,然后再用下面的命令复制:

cp -R /home /aaa

以上是关于linux下怎么把一个文件复制到另一个文件夹的主要内容,如果未能解决你的问题,请参考以下文章