如何在站点静态文件下查找某关键字并修改文件名?

前段时间,因关于某些政治性的内容,公司部分站点需要做处理,而且数据库只保存近几年的,无法通过数据库删除或修改早些年的静态页面数据

站点文件个数,不会少于几百万,我想大家不会一个个手工查找吧!也许真的有人那样搞呢,我只能“呵呵”了

用程序思想去解决工作中遇到的问题,很有必要!

站点环境:linux

可以使用的shell脚本处理,因为他们是天生在一起的,而且处理上很方便,不过一开始有一个问题木有考虑到,后面再讲

上代码,shell代码如下:

#!/bin/sh
# author: 凹凸曼
# email: [email protected]

d=$1
delname=$2
#delname1=$3
if [ -z $d ]
then
   echo "站点不存在"
   exit 0
fi
if [ -z $delname ]
then
  echo "关键字不存在"
  exit
fi
log=./search.log
find ${d}	-type f -iname  "*.htm" -o -type f -iname "*.html" -o -type f -iname "*.shtml" -o -type f -iname "*.shtm"|xargs grep "$delname" >> ${log}
#| cut -d\: -f1  | awk ‘{system("mv "$1" "$1"xxx" )}‘
sleep 1

while read line

do
  d=`echo $line | cut -d\: -f1`
  mv "$d" "$d"xxx | echo "$d 修改为 $d"x >>result.log

  sleep 1
done < ${log}

mv ${log} ${log}`date +%Y%m%d%H%s`

本地测试了,木问题,上服务器测试,找不到相应的关键字的页面

问题:页面是乱码,原因:系统编码造成的,不想改变正在运行中的环境编码

就用python重新写了一个脚本程序进行处理如下:

# -*- coding:utf-8 -*-
# author: 凹凸曼
# email : [email protected]

import os
import os.path
import re
#版本要求:2.6至3.0以下
class ReFile():
  #目录
  __rdir="./"
  __type=[‘.htm‘,‘.html‘,‘.shtml‘,‘.shtm‘]
  #文件名后缀增加 sss
  __dsuffix=‘sss‘
  #处理的关键字
  __dealstr=‘‘
  __log="./re.log"
  def __init__(self,dir,dealstr):
    self.__rdir=dir
    self.__dealstr=dealstr
  def getFiles(self):
    for parent,dirnames,filenames in os.walk(self.__rdir):
      for filename in filenames:
        dirfilename=parent+‘/‘+filename
        if  os.path.splitext(filename)[1] in self.__type:
          try:
            data=open(dirfilename,‘r‘).read().decode("gbk").encode("utf-8")
          except Exception,e:
            data=open(dirfilename,‘r‘).read()
          mm=re.search(self.__dealstr,data)

          if mm:
            self.saveLog(dirfilename)
            os.rename(dirfilename,dirfilename+self.__dsuffix)
          else:
            continue
        else:
          continue
  def saveLog(self,c):
    file=open(self.__log,‘a‘)
    file.write(str(c)+‘\n‘)
if __name__==‘__main__‘:
  #ReFile
  #@param1: 站点路径 如:/data/site
  #@param2: 关键字 如:凹凸曼博客|apoyl
  refile=ReFile("/data/site","凹凸曼博客|apoyl")
  refile.getFiles()

总结:系统运维中,常常需要把处理问题的思路实现成具体程序,去处理一些繁琐的问题

时间: 2024-09-30 09:39:23

如何在站点静态文件下查找某关键字并修改文件名?的相关文章

linux下查找包含关键字的文件

在linux下如果要查找包含某个关键字的文件,如要在nagios目录下搜索带有关键字"store-rd-sys"的文件,在终端下运行命令: /usr/local/nagios/etc/* (nagios目录) 法1:grep -r "关键字" 路径 [[email protected] ~]#grep -r "store-rd-sys" /usr/local/nagios/etc/cfgs/ /usr/local/nagios/etc/cfgs/

nodejs express 静态文件的路径

当express 设置为静态文件服务器的时候.可以通过2种方式进行方位: 1,通过设置app.use('路径1','../a/b/image') express 路径的形式,如 src="路径/1.jpg" 进行访问 2,通过原始的访问形式进行 如 src="../a/b/image" 注意点: 1,当有express使用了多个路径的时候如:app.use('路径1','../a/b/image').app.use('路径1','../aa/bb/image'):如

apache上部署django的静态文件

一直在优化自己博客的代码, 昨天把css样式表分离出来, 用作静态 文件, 但是自己还没学django怎么使用静态文件, 经过一番google 终于解决了. django 使用静态文件有两种方法, 一种就是部署在django上, 另外一种 是部署在apache 上, 前一种方法有一定的缺陷, 效率不高, 而且会造 成一定的安全威胁, 具体我也不知道, 大家可以看官方文档, 但是还是 向大家介绍一下. 可以在你的项目下建一个static目录, 在settings.py 中添加: #填写你静态文件的

使用find根据文件内容查找文件名

find命令用法: 语法: 1 find (选项) (参数) 常用选项: 1 -exec<执行命令>: 假设find指令的回传值为True,就执行该指令; 2 -ls: 假设find指令的回传值为True,就将文件或目录名称列出到标准输出; 3 -name<范本样式>: 指定字符串作为寻找文件或目录的范本样式; 4 -path<范本样式>: 指定字符串作为寻找目录的范本样式; 5 -size<文件大小>: 查找符合指定的文件大小的文件; 6 -type<

Django静态文件配置、request方法、ORM简介、字段的增删改查

app的创建注意事项: 在Django新创建的app要在seetings.py中添加注册,才会生效 创建app:django-adminapp an startapp app名称 或者 python3 mansge.py startpp名称 手动创建的app不会自带存放html的templates文件夹,需要手动创建 Django静态文件配置 对于前端已经写好了的文件,我们只是拿过来使用,那么这些文件都可以称之为"静态文件"; 静态文件可以是:boostrap一类的前端框架,已经写好了

Django_静态文件/中间件/分页

1. 静态文件配置 2. 中间件 在不修改源代码的前提下,动态的逻辑控制代码执行(装饰器) 2.1 切入函数 2.2 自定义中间件 中奖 访问限制 2.3 分页 paginator 常见错误 原文地址:https://www.cnblogs.com/yzg-14/p/12343763.html

node框架express里面静态文件中间件express.static,根据路径名查找文件

- 是express框架下的一个方法,可以根据请求路径名查找某个文件下文件名字和路径名相同的文件 - 3.X里面有20多个中间件,但是在4.X里面 只保留了express.static - 语法 express.static('/设置一下请求路径/路径名','要被查找文件夹的绝对路径') 请求路径后面跟着的路径名和静态文件的根文件下面的文件名字一致,返回页面 let express =require('express'); let path=require('path') let app=exp

IIS7的集成模式下如何让自定义的HttpModule不处理静态文件(.html .css .js .jpeg等)请求

今天将开发好的ASP.NET站点部署到客户的服务器上后,发现了一个非常头疼的问题,那么就是IIS7的应用程序池是集成模式的话,ASP.NET项目中自定义的HttpModule会处理静态文件(.html .css .js .jpeg等)请求,而这不是我预期的效果,因为我只想让托管文件(aspx, ascx 及 MVC等)的请求被自定义HttpModule处理,但是我发现在IIS7的集成模式下所有请求都会进入HttpModule被处理. 后来我尝试将IIS7站点下的应用程序池改为了经典模式,这样的话

django静态文件查找逻辑

最近被django的静态文件配置整疯了. 决定直捣黄龙,看看底层代码: 首先用manage finstatic xxxx.js 看看处理逻辑,发现主要在:C:\Python27\Lib\site-packages\django\contrib\staticfiles\finders.py中的find函数,如下: 调试进入:C:\Python27\Lib\site-packages\django\contrib\staticfiles\finders.py的FileSystemFinder类的fi