• 用Linux命令行实现删除和复制指定类型的文件


    (一)Linux 删除当前目录及子目录中所有某种类型的文件

    方法1 : 此方法不能处理目录中带空格的那些。

    rm -rf `find . -name "*.example"`

    Linux的文件名(目录也是一种文件)不建议带空格,命令行中不好处理这个空格。


    方法2:组合使用 find 及 xargs

    find test2/ -name '*.example' |xargs rm -rf

    (xargs 是给命令传递参数的一个过滤器,可以将前一个命令产生的输出作为后一个命令的参数。)
    即将 find 产生的输出(test2 目录下的所有 example 类型文件),作为 rm 的参数,从而完全删除。


    方法3: 组合使用 find 和 delete 命令

    find . -name *.example -delete

    此方法可以看作是对 方法2 的简化改进 。

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

    首先建立一个用于测试的目录,目录中包含用于测试的 *.txt 文件和 *.tes 文件。
    目标是保持当前的目录结构,只把 txt 文件复制出来。

    方法1:当不需要的文件类型较为单一时,可以通过完全复制然后删除指定类型的文件完成

    // Step1 使用如下命令,将测试目录 test 下所有内容完全复制到 test2
    cp -r test/ test2 
    // Step2 组合使用find及xargs,将 *.tes 文件删除。
    find test2/ -name '*.tes' |xargs rm -rf 

    适用场景举例:把项目文件备份,要去除其中的 .svn 文件,可以采用这种方式。

    方法2:需要的文件为单一类型,带目录结构复制
    这种情况下可以使用 tar 命令将指定类型的文件打包,然后解包。

    // Step1 建立目录 test3
    mkdir test3
    // Step2 将指定类型文件带目录结构打包
    find test/ -name '*.txt' |xargs tar czf test3.tgz
    // Step3 解包到目录 test3
    tar zxvf test3.tgz -C test3

    适用场景:较为普遍,例如可以复制某个 Web 项目的所有 html/jsp/php 文件;或复制其他项目中特定类型的源文件。

  • 相关阅读:
    redis05
    redis04
    redis03
    redis02
    C++编程学习(九)this指针&友元函数
    C++编程学习(八)new&delete动态内存分配
    ROS大型工程学习(二) 怎么阅读大型工程
    计算机操作系统学习(一) Linux常用指令(随时更新)
    ROS大型工程学习(一) 必须了解的基本文件
    单片机学习(一) 中断、定时器、优先级的一些理解
  • 原文地址:https://www.cnblogs.com/yshl-dragon/p/3277841.html
Copyright © 2020-2023  润新知