Linux脚本——复制特定文件到特定文件夹

来源:互联网 发布:子域名 需要备案吗 编辑:程序博客网 时间:2024/04/28 05:00

1、复制指定目录下的全部文件到另一个目录中

直接 cp -r复制 该目录文件 即可。

linux下进行复制的命令为cp。 假设复制源目录 为 sour ,目标目录为。即cp -r sour dir。

怎样才能将sour下所有文件复制到dir下呢?

  • 如果dir目录不存在,则可以直接使用 cp -r sour dir 即可。
  • 如果dir目录已存在(空或有其他文件都行),则需要使用 cp -r sour/. dir 如果这时使用cp -r sour dir,则也会将sour目录复制到dir中,明显不符合要求。

2、复制指定文件到指定文件夹(保留目录结构)

首先建立一个用于测试的目录,用'tree'命令查看其结构如下所示:
    
  
可见,目录中主要包含用于测试的*.txt文件和用于充当炮灰的*.tes文件
目标是保持当前的目录结构,只把txt文件复制出来

情形一:当不需要的文件类型较为单一时,可以通过完全复制然后删除指定类型的文件完成
Step1 使用命令 cp -r test/ test2 将测试目录test下所有内容完全复制到test2,此时树形结构如下图
 
Step2 组合使用find及xargs,将*.tes文件删除
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 -cvf test3.tgz
 
Step3 解包到目录test3(必须建立新目录解压至此)
tar -zxvf test3.tgz -C test3
 
运行结果如图所示:
 
  
适用场景:较为普遍,例如可以复制某个Web项目的所有html/jsp/php文件;或复制其他项目中特定类型的源文件


cp命令:

cp -r sour dir(此时若没有dir目录文件。即在工作路径下建立dir目录文件)

注意:sour和dir都是目录文件,加-r选项做递归处理时,复制sour目录及其子目录下的所有文件到dir目录里边。如 sour指该目录和该目录下文件和该目录下子目录的文件。
即cp -r sour dir和cp -r sour/. dir有区别
cp -r sour/. dir和cp -r sour/. dir/.没区别

find命令:

find dir1 dir2 -name "*.tes" -o -name "*.txt"  "*.txt" 在dir1和dir2目录及子目录下搜索所有名称为*.tes和*.txt的文件
find dir -type f -name "text"  在dir目录及其子目录下搜索所有名称为text的普通文件
find dir -type f ! -name "text"  加否定参数(f:普通文件; d:目录文件; )

xargs命令:



结合find命令构建单行命令,即是将find的搜索结果先转换为命令行参数,再传递给别的命令作为参数。

tar命令:

tar(选项)(参数)
-c 建立新的备份文件
-t 列出备份文件内容
-x 从备份文件中还原文件

-v 显示指令操作过程
-f<文件列表> 指定备份文件列表

-A 增加文件到已存在的备份文件中
-C<目录>  解压到特定目录 

打包/压缩:
tar (选项)(-c 文件名 -f 需要打包/压缩的文件列表)


查看打包/压缩文件:
tar -ztvf

解包/压缩:
tar -zxvf log.tar.gz -C ./tar_dir


参考及转载自:http://www.cnblogs.com/dpf-learn/p/6143145.html



原创粉丝点击