zoukankan      html  css  js  c++  java
  • Linux 下rm+grep删除除去指定文件的剩余所有文件


    例如:  删除当前文件夹下    .c和 .h    文件以外的文件

    rm -f   `ls ./ | egrep -v "(.c$|.h$)"` 

    1. ls 列出所有文件;  

    2. egrep -v   查找所有不包含  .c和 .h 的文件;  .c$ —— 以.c 结尾的文件

    3. rm -f 强制删除符合条件的文件


    egrep  —— 查询 多个 关键字; 

     除了错误消息和使用消息不同以及 -s 标志的功能不同之外,  egrep 命令与 grep 命令带 -E 标志是一样的。





    http://blog.chinaunix.net/uid-22556372-id-1773426.html



    今天下午有个任问我如何删除一个目录下的除了想要的文件之外的所有文件。我想了想grep和rm配合一下不正好
    么。
    于是经过查阅资料得出了一条命令:过程如下。
    首先在一个目录下:


    zhou@zhou:~/LinuxC/file/test$ ls
    1  23sdfwe  88888888  aabb  ag    ghdda     mmm
    2  3        aaaaaaaa  abc   asdg  llllllll  wwwww
    zhou@zhou:~/LinuxC/file/test$ 


    然后我想删除除了包含字符串aa外所有的文件,也就是想留下aabb,aaaaaaaa,这两个文件,其他的全部删除
    下面是我的命令:


    zhou@zhou:~/LinuxC/file/test$ rm `ls | grep -v "aa"`



    grep就是在文件中搜索包含指定字符串的行。
    grep加了“-v” 选项就是反一下,找到文件中不包含指定字符串的行。


    然后查看一下:


    zhou@zhou:~/LinuxC/file/test$ ls
    aaaaaaaa  aabb
    zhou@zhou:~/LinuxC/file/test$ 


    所以了,成功了。
    简单的解释一下那条命令吧:rm 删除后面指定的文件
    `ls | grep -v "aa" ` 记得外面是反引号(反引号的位置就在标准键盘的数字1的左边),ls:查看当
    前目录下所有的文件,使用grep命令过滤一下 grep -v "aa" 就是找出字符串中不带“aa”的。


    整体再顺一下:列出文件名不带“aa”串的文件,然后删除他们。OK。


    其实说起来简单,当时我也做了好长时间,因为以前没怎么接触grep,因此一开始我想到的办法是使用正则表
    达式,但是在做的过程中突然发现了grep使个不错的东西,因此就使用了。


    上面的命令使删除带有“aa”串的文件,那如果我只想留下文件aa呢?很简单


    zhou@zhou:~/LinuxC/file/test$ rm `ls | grep -v "^aa$" `


    在aa前面加上^,后面加上$表示结束符的意思,这个就是完全匹配了。




    好了,就这么多。但愿以后能用到这个有用的命令

  • 相关阅读:
    RFID基础知识
    iOS开发技巧:使用ObjectiveC创建UUID的代码
    Java获取当前路径
    Oracle 10g 一些事项
    windows 2003 下IIS没有ASP.NET 1.1.4322选项卡
    Windows下手动完全卸载Oracle
    C#如何检测网络端口连接的状态
    windows 2003 下oracle从10.2.0.1升级到10.2.0.4
    Oracle 获取当前日期及日期格式
    Retrieving COM for CLSID {0002450000000000C000000000000046} 80040154.
  • 原文地址:https://www.cnblogs.com/roger0212/p/4436694.html
Copyright © 2011-2022 走看看