过滤删除小脚本(find,grep,xargs,rm连用)
发表于 : 2011-11-11 10:24
自己的编程练习,文件夹,长时间下来,积累了不少垃圾,那天看sed用法,无意中发现grep的好用用法。
比如,我的wkx9dragon 目录下有一堆文件和目录,我只想保留某些文件,比如*.cpp,*.c,*.h,*.bat,*.py,我就这么写,语句。
find wkx9dragon -type f | grep -v --perl "\.cpp$|\.c$|\.h$|\.bat$|\.py$" | xargs -I {} rm -v {}
简单吧,一行语句搞定!
1. gnu find 很奇怪, find wkx9dragon -type f 这样写就可以,这样写就不可以find -type f wkx9dragon。 -type f 表示筛选普通文件,目录等特殊文件不要。
2.grep -v --perl 中-v表示反向选定,--perl 表示使用perl的正则语法,我觉得perl正则语法就通用。$符号,表示结尾,如果没有他,像什么*.cpp~,*.cpp.bak都被筛选出来而,那可不是我想要的。 引号里的| 那就表示或的意思了,\是转义符号,正则语法保留了一些特殊符号,像什么 . * ^ $ \等等。用\.就是表示字符.的意思。
3. xargs 不好意思我就只会 xargs -I {} command {} 那么用,别的还真不会。
好了,就罗嗦那么多了。大家会得别笑话,不会的,让我小小虚荣心美一下。呵呵。
比如,我的wkx9dragon 目录下有一堆文件和目录,我只想保留某些文件,比如*.cpp,*.c,*.h,*.bat,*.py,我就这么写,语句。
find wkx9dragon -type f | grep -v --perl "\.cpp$|\.c$|\.h$|\.bat$|\.py$" | xargs -I {} rm -v {}
简单吧,一行语句搞定!
1. gnu find 很奇怪, find wkx9dragon -type f 这样写就可以,这样写就不可以find -type f wkx9dragon。 -type f 表示筛选普通文件,目录等特殊文件不要。
2.grep -v --perl 中-v表示反向选定,--perl 表示使用perl的正则语法,我觉得perl正则语法就通用。$符号,表示结尾,如果没有他,像什么*.cpp~,*.cpp.bak都被筛选出来而,那可不是我想要的。 引号里的| 那就表示或的意思了,\是转义符号,正则语法保留了一些特殊符号,像什么 . * ^ $ \等等。用\.就是表示字符.的意思。
3. xargs 不好意思我就只会 xargs -I {} command {} 那么用,别的还真不会。
好了,就罗嗦那么多了。大家会得别笑话,不会的,让我小小虚荣心美一下。呵呵。