linux 查找包含关键字的所有文件并删除该文件。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 查找包含关键字的所有文件并删除该文件。相关的知识,希望对你有一定的参考价值。

比如,查找/var/www/html/tom下面的所有包含关键字”abc"的文件,并删除这些文件,批量删除
对不起,可能是我说的不清楚,是文件内容包含abc,不是文件名。

1、连接上相应的linux主机,进入到等待输入shell指令的linux命令行状态下。

2、在linux命令行下输入shell指令:find . -name "abc*"|xargs rm -rfv。

3、键盘按“回车键”运行shell指令,此时会看到abc开头的abc123.txt和abc6swef.txt都被删除了。

参考技术A find  /var/www/html/tom -type f  | xargs -n1 -I "ZZZZZ" grep -l "abc" "ZZZZZ" | xargs -n1 -I "XXXXX" rm -f "XXXXX"


其中, ZZZZZ 和 XXXXX 都是临时命名变量,你使用的时候直接这样用就可以。不需要替换成别的字符。


前面2个回答,都是文件名中包含 abc ,而不是文件内容包含abc。所以,我的是正确的。

本回答被提问者采纳
参考技术B 我这个方法感觉有点繁琐:

# find . -name \* -type f -print | xargs grep "hostname" | awk -F: 'print $1' | xargs rm -rf

说明:查找当前目录下包含hostname的文件,并删除!
应该还有更简便的方法!
参考技术C find /var/www/html/tom/* -name "*abc*" -exec rm -rf \;

Linux查找整个目录下包含关键词的文件并全局替换文件内容

一、查找目录下包含关键词的文件:

grep -r "www" ./    #查找当前目录下包含www的文件名称及内容

参数:
-i 不区分大小写。
    比如:
    grep -ri "www" ./  #查找当前目录下包含www和WWW的文件名称及内容。
-l 只列出文件的名称。
    比如:
    grep -ri "www" ./  #查找当前目录下包含www和WWW的文件名称。
-L 只列出不匹配条件的文件的名称。
    比如:
     grep -rLi "www" ./  #查找当前目录下不包含www和WWW的文件名称。
-w 只匹配单个单词,而不是整个字符串或句子。
    比如:
    grep -rw "test" ./   #会匹配到包含test单词的,不会匹配到包含testwww的内容。

当然,也可以使用通配符 " * " 和开始 " /< " 结束 " /> " 标识符。

grep -r "www*" ./  #通配符*在这里的作用不大,因为默认的就是匹配所有包含关键词的内容。
grep -r "/<www" ./ #只匹配以www为首的字符串,比如www.baidu.com。
grep -r "www/>" ./ #只匹配以www结尾的字符串,比如testwww。

 

二、全局替换文件内容

  这里需要用到linux的命令sed:

  

#替换单个文件下的内容,比如将文件中的"alidata"替换为"data".

sed -i "s/alidata/data/g" test.txt

#替换某个目录下所有文件中的内容,比如将root目录下所有文件中的"wwwroot"替换为"www".

sed -i "s/wwwroot/www/g" ‘grep -rl wwwroot /root‘

 

以上是关于linux 查找包含关键字的所有文件并删除该文件。的主要内容,如果未能解决你的问题,请参考以下文章

Linux 查找某目录下包含关键词的所有文件

Linux 查找某目录下包含关键词的所有文件

linux下如何查找需要的文件后并删除

查找文件中所有出现的字符串并在 Perl 中打印其行号

linux查找并输出特定行和它的前一行且在后面再输出一个空白行的命令

我想在linux下查找当前目录下名为Bin的文件夹并直接zip,命令怎么写