linux下怎么样将一个文件夹中的多个文件同时拷贝到另一个文件夹

已举报 回答 关注

linux下怎么样将一个文件夹中的多个文件同时拷贝到另一个文件夹

  • 回答数

    8

  • 浏览数

    5,213

8个回答 默认排序
  • 默认排序
  • 按时间排序

已采纳
cp file1 file2 file3 directory
即将文件file1 file2 file3复制到directory
可以使用通配符,比如
cp file? *File* other directory
将file开头后面一个字符、包含File字符的文件和other文件复制到directory
如果拷贝目录,需要-r参数:
cp -r souredir destdir
取消 评论

920

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

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

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

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

你现在的问题已经不是你原来题目的意思了.
你原来的题目是:比如/home 和/aaa 把/home下的文件包括隐藏文件,复制到/aaa
那么我的做法并没有问题.
然而你现在的问题非常针对这个文件夹的特点.由于/home目录夹下的一般性质都是一些隐藏类型的.bash之类的配置文件,但是如果你是想复制这个文件夹的内容,那根本不需要这么麻烦.
你的做法之所以不对是因为 .* 这个只能说明这里有.开头的所有字母.但是..这条也默认正确了.我认为,首先就要确定至少有2个字符,这个以一来, .[^.]* 这样就能表示了(当然我只是提出这个概念,因为我不太清楚怎么是非点的具体指令,但是这个意思应该是没有错,就是说,以.开头的,[^.]表示1个字符,而且是非.的字符(当然这条的写法是错的,我只是说这个概念),*表示有0个或者0个以上的任意字符串.如果照这条做法来说,以.和..这两个是肯定不符合要求的,这样的话,所有的隐藏文件都符合要求了.只不过,注释化的这个点使用`.`还是'.',我不太清楚,平常用少.
取消 评论
硬盘出现了坏道了,这是物理商解决不了的.最好的办法就是把能复制出来的文件都复制出来,然后把这块盘卖了,从新买块新盘.硬盘一旦出现了坏道,那以后会越来越多的,不要勉强用.虽然可以把坏道单独分区,但会丢失很大空间,现在移动硬盘都不贵,直接换新的最保险,也最划算.
取消 评论
/**
* 复制整个文件夹内容
* @param oldPath String 原文件路径 如:c:/fqf
* @param newPath String 复制后路径 如:f:/fqf/ff
* @return boolean
*/
public void copyFolder(String oldPath, String newPath) {

try {
(new File(newPath)).mkdirs(); //如果文件夹不存在 则建立新文件夹
File a=new File(oldPath);
String[] file=a.list();
File temp=null;
for (int i = 0; i < file.length; i++) {
if(oldPath.endsWith(File.separator)){
temp=new File(oldPath+file[i]);
}
else{
temp=new File(oldPath+File.separator+file[i]);
}

if(temp.isFile()){
FileInputStream input = new FileInputStream(temp);
FileOutputStream output = new FileOutputStream(newPath + "/" +
(temp.getName()).toString());
byte[] b = new byte[1024 * 5];
int len;
while ( (len = input.read(b)) != -1) {
output.write(b, 0, len);
}
output.flush();
output.close();
input.close();
}
if(temp.isDirectory()){//如果是子文件夹
copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]);
}
}
}
catch (Exception e) {
System.out.println("复制整个文件夹内容操作出错");
e.printStackTrace();

}

}
取消 评论
请在DOS窗口下输入:xcopy d:\*.* n: /s.执行之前还要先看看目标盘是否有足够的空间。
取消 评论
按住Ctrl键不放(键盘左下脚那个键),再鼠标左键你想拷的文件选中即可。。如果想拷贝一些连续排列的文件。先选中一个文件a,再按住Shift键不放,再点最后一个文件d,这样就选中a到d之间的文件。。要采纳哦。。谢谢哈!
取消 评论
个人方法是,首先设置一下分类,然后选中分类同样后缀名的文件查看有多少文件,之后选中其中的百分之多少进行拷贝就行了,这个是比较直观的方式。
用DOS拷贝直接创建个bat文件运行就行了,拷贝一定量的时候关闭,删除多余的拷贝的文件即可!这个是拷贝任何后缀名为wma各式的文件。命令如下:
copy *.wma
取消 评论
以txt文件为例
@echo off
setlocal enabledelayedexpansion
for /f %%i in ('dir/b *.txt') do (
if !n! gtr 1000 goto ll
copy "%%i" d:\back
:ll
set /a n+=1
)
取消 评论
ZOL问答 > linux下怎么样将一个文件夹中的多个文件同时拷贝到另一个文件夹

举报

感谢您为社区的和谐贡献力量请选择举报类型

举报成功

经过核实后将会做出处理
感谢您为社区和谐做出贡献

提示

确定要取消此次报名,退出该活动?