Linux复制指定目录及子目录下特定类型的文件

主要参考这个:

http://www.2cto.com/os/201208/144996.html

拷贝一些内容就是:

首先建立一个用于测试的目录

可见,目录中主要包含用于测试的*.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

另一种方法是用find+cpio,主要参考http://zohead.com/archives/linux-copy-directory-ignore-files/

最后我自己写的脚本是:

find . -regextype posix-egrep -mindepth 1 -regex ‘.*\.(cpp|h)$‘|cpio -admvp ../libcrafter.fil

用tar的方式就是:

find . -regextype posix-egrep -mindepth 1 -regex ‘.*\.(cpp|h)$‘|xargs tar cjf ../libcrafter.bz2

这个有点复杂,更简单些的是:

find . -name "*.cpp" -or -name "*.h"
libcrafter实际要用到Makefile.am,需要的话还需要加上Makefile.am,别的文件基本上不变。

实际工作中用xargs tar ...

-regextype 缺省用emacs-egrep,但是emacs-egrep和posix-egrep很接近,一般这个可以省略了。

因为打包后,文件仅仅74K。否则,用diff处理,发送patch文件就行了。那一般只有多少字节而已。

最后是要用邮件发给在客户那里工作的同事的。

因为同事那里有以前的一个svn拷贝,所以其实只需要发过去从那个svn checkin时间点到现在更新的文件就行了。

参考 http://www.oschina.net/translate/15-practical-unix-linux-find-command-examples-part-2?print

格式类似于:

find libcrafter -mtime -1 #1×24小时内修改的文件

我差不多一天内就会解决bug.

或者比某个文件新的文件:

find libcrafter -newer Makefile.am

最近一次修改时间在1个小时(60分钟)之内的文件或目录

find . -mmin -60

如果check out文件,那么日期挺新的。

如果是在windows下修改文件,然后再传到svn里,在Linux下svn up,然后调试,可能又有修改。

应该在Windows下,svn up,然后 在cygwin里操作。

这样一来文件体积更小了。

本来想用rsync --include来拷贝特殊文件的,发现这种方式不行。

Linux复制指定目录及子目录下特定类型的文件,布布扣,bubuko.com

时间: 2024-10-12 16:29:26

Linux复制指定目录及子目录下特定类型的文件的相关文章

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

linux复制指定目录下的全部文件到另一个目录中复制指定目录下的全部文件到另一个目录中文件及目录的复制是经常要用到的.linux下进行复制的命令为cp.假设复制源目录 为 dir1 ,目标目录为dir2.怎样才能将dir1下所有文件复制到dir2下了如果dir2目录不存在,则可以直接使用cp -r dir1 dir2即可.如果dir2目录已存在,则需要使用cp -r dir1/. dir2如果这时使用cp -r dir1 dir2,则也会将dir1目录复制到dir2中,明显不符合要求.ps:di

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

linux复制指定目录下的全部文件到另一个目录中复制指定目录下的全部文件到另一个目录中文件及目录的复制是经常要用到的.linux下进行复制的命令为cp.假设复制源目录 为 dir1 ,目标目录为dir2.怎样才能将dir1下所有文件复制到dir2下了如果dir2目录不存在,则可以直接使用cp -r dir1 dir2即可.如果dir2目录已存在,则需要使用cp -r dir1/. dir2如果这时使用cp -r dir1 dir2,则也会将dir1目录复制到dir2中,明显不符合要求.ps:di

批处理删除指定目录及子目录下所有.svn目录

Java代码 @REM 根据用户输入,删除指定目录及子目录下所有.svn目录 @echo off :inputPath set DESTINATION_PATH=: set /p DESTINATION_PATH="Please input the root directory need to clear the svn folders , press enter !  :" if not exist %DESTINATION_PATH% ( @echo [Warn] The inpu

打印 指定目录下和子目录下的的所有.java文件的路径. (使用FileFilter过滤器)

1 package test; 2 /* 3 * 打印 指定目录下和子目录下的的所有.java文件的路径. 4 * */ 5 import java.io.*; 6 import java.util.*; 7 8 public class Test14 9 { 10 public static void main(String[] args) 11 { 12 File dir = new File("C:\\Users\\Dell\\Workspaces\\MyEclipse 10")

Java 遍历指定目录及子目录下的文件

/** * 遍历指定目录及子目录下的文件 * * @author testcs_dn * @date 2014年12月12日下午2:33:49 * @param file 要遍历的指定目录 * @param collector 符合条件的结果添加到此List<File>中 * @param pathInclude 路径中包含指定的字符串 * @param fileNameInclude 文件名(不包含扩展名)中包含指定的字符串 * @param extnEquals 文件扩展名为指定字符串 *

在目录及其子目录下寻找匹配的文件的python实现

目录及其子目录下寻找匹配的文件的python实现 python中在目录及其子目录下寻找匹配的文件,这是一个小练习 题目如下: (1)编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径 代码如下: #寻找指定目录下(包含子目录)中的文件名含有指定字符串的文件,并打印出其相对路径 #coding:utf-8 import os def my_find(s,root='.'): dirs=[]#用来保存目录 matchs=[]#用来保存匹配字符串的文件

删除一个目录及其子目录下的所有.svn文件

今天建立svn,加入代码,发现这些个文件夹中竟然已经有.svn文件夹,也就是它以前使用过svn, 这下就有点麻烦,在全新的svn里,这些.svn需要删除,又不可能一个一个手工去删除 网上翻了一下,发现一大段代码,很不整洁的代码,不想用,直接写了个小函数   代码如下: 直接调用即可: scanfiles('c:\wingsbook'); function scanfiles($pfile){ $dirs=scandir($pfile); foreach($dirs as $file){ $tmp

在HDFS上删除某个路径下特定类型的文件,比如class类型文件,比如txt类型文件

1.先获取连接: public class Utils { public static FileSystem HDFS() throws Exception{ Configuration conf = new Configuration(); conf.set("fs.defaultFS","hdfs://potter2:9000"); System.setProperty("HADOOP_USER_NAME", "potter&quo

Linux复制指定目录下的文件夹结构

[[email protected] ~]# su - applmgr[[email protected] ~]$ cd $APPL_TOP/inv[[email protected] inv]$ find . -type d -exec mkdir -p $APPL_TOP/cux/{} \;[[email protected] inv]$ cd ..[[email protected] appl]$ cd cux[[email protected] cux]$ du8       ./12.