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

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

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

站点环境:linux

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

上代码,shell代码如下:

#!/bin/sh
# author: 凹凸曼
# email: jar-c@163.comd=$1
delname=$2
#delname1=$3
if [ -z $d ]
thenecho "站点不存在" exit 0
fi
if [ -z $delname ]
thenecho "关键字不存在"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 1while read linedo d=`echo $line | cut -d\: -f1`mv "$d" "$d"xxx | echo "$d 修改为 $d"x >>result.logsleep 1
done < ${log}mv ${log} ${log}`date +%Y%m%d%H%s`

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

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

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

# -*- coding:utf-8 -*-
# author: 凹凸曼
# email : jar-c@163.comimport 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=dirself.__dealstr=dealstrdef getFiles(self):for parent,dirnames,filenames in os.walk(self.__rdir):for filename in filenames:dirfilename=parent+'/'+filenameif  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:continueelse:continuedef saveLog(self,c):file=open(self.__log,'a')file.write(str(c)+'\n')
if __name__=='__main__':#ReFile#@param1: 站点路径 如:/data/site#@param2: 关键字 如:凹凸曼博客|apoylrefile=ReFile("/data/site","凹凸曼博客|apoyl")refile.getFiles()

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

  • 相关文章推荐:

  • Linux有问必答:如何在VMware ESXi虚拟机上设置静态MAC地址

  • ArchLinux(2013)中的网络配置和静态IP时DNS刷新的解决方法

  • Linux服务器静态IP设置与Proftpd连接速度优化

  • 本文来自:爱好Linux

  • 本文链接:http://www.ahlinux.com/mainte/9345.html

转载于:https://blog.51cto.com/9626185/1579760

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

  1. matlab 列表 剪切,利用Matlab进行文件批量复制、剪切和修改文件名

    文件批量复制.剪切和修改文件名 电脑环境 文件批量复制 文件批量剪切 批量修改文件名 批量修改文件名和复制(剪切) 电脑环境 MATLAB:2018a Windows:win10 文件批量复制 clo ...

  2. linux 删除含有关键词的文件_linux下查找包含关键字的文件

    在linux下如果要查找包含某个关键字的文件,如要在nagios目录下搜索带有关键字"store-rd-sys"的文件,在终端下运行命令: /usr/local/nagios/et ...

  3. Linux shell 对于文件的删除,复制,修改文件名等操作

    2019独角兽企业重金招聘Python工程师标准>>> 修改文件名或者修改文件夹名 mv file1 file2 把当前目录下的file1文件名改成file2,如果该目录下有file ...

  4. adb shell 修改文件名_教你三招快速文件批量重命名方法-linux修改文件名

    在我们的工作生活中,不管是程序员还是非程序员,我们都会遇到过一个需求,那就是对一堆的文件进行重命名.在Windows下有很多优秀的软件可以帮助我们完成这个需求,而在Linux环境下,我们可以简单敲一些 ...

  5. linux目录命令改目录名,Linux命令详解——文件和目录常用命令-linux修改文件名...

    文件和目录常用命令 查看目录内容 ls 切换目录 cd 创建和删除操作 touch rm mkdir 拷贝和移动文件 cp mv 查看文件内容 cat more grep 其他 echo 重定向 &g ...

  6. PHP获取文件名称表格,并批量修改文件名

    前言 本文是自己在进行项目编写时遇到的情况,需求是提取目录中的pdf文件名,判断是否对应的压缩文件,生成相应的表格,并重命名文件. 实现效果 起始 结果 代码 <?php/*** 列出文件表格* ...

  7. linux find 文件夹下查找字符串

    1. find / -name "*" | xargs grep "route" 在根文件夹下查找含有关键字route的文件,列出文件名和route所在行. 2 ...

  8. linux怎么在目录下查找文件,linux find-在指定目录下查找文件

    find命令用来在指定目录下查找文件.任何位于参数之前的字符串都将被视为欲查找的目录名.如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件.并且将查找到的子目录和文件全部进 ...

  9. c语言;文件名批量修改要求可以修改整个文件内文件名或后缀名自动,Python批量修改文件名...

    处理语料库时,有些文件名字很不规则,为了方便处理,同义按数字顺序修改名称,主要是用到os模块: import os def RenameFiles(srcdir): #将目录下所有的文件命名为数字开头 ...

最新文章

  1. 机房收费--一般用户
  2. 在Spring Controller中将数据缓存到session
  3. C++实现bellman ford贝尔曼-福特算法(最短路径)(附完整源码)
  4. centos7救援模式--单机模式(单用户模式)
  5. 分享一个学习cocos-html5的链接
  6. Unity的camera组件
  7. 【系统架构设计师】软考高级职称,一次通过,2017年下半年系统架构设计师考试论文真题(论软件架构风格)
  8. Oracle误操作--被提交后的数据回退(闪回)
  9. [Python+debug] 设置Python环境变量-Windows10
  10. Nginx源码分析 - Event事件篇 - Nginx的Event事件模块概览(17)
  11. 数据挖掘10大算法及详解
  12. 需求分析中系统参与者的概念和确定
  13. 打开计算机硬盘是个磁盘图标 不显示大小,硬盘图标显示异常的解决办法
  14. dw版权信息栏如何制作_Dreamweaver怎么制作网页模板
  15. 苹果cms永久免费影视建站程序
  16. c语言循环语循环控制,C语言.控制语循环语句.ppt
  17. 长期执业的顶尖领先律所ROSEN提醒Mylan N.V.投资者注意MYL证券集体诉讼的重要截止日期为8月25日
  18. 硬件混合渲染器 (HWC)
  19. MapReduce快速入门系列(4) | Hadoop序列化
  20. 城市巡游赛(树和图)

热门文章

  1. 推荐一个博客,或许给技术流的自己一些启示
  2. 乐迪机器人开热点_碧桂园餐饮机器人量产!预计年产能达4000台
  3. [译] 单元测试,精益创业,以及两者之间的关系
  4. Repeater的嵌套结合用户控件的使用
  5. 有趣的insert死锁
  6. kaggle为什么总是难以拿到金牌
  7. flink的scala版本的wordcount+flink没有输出结果的几种原因
  8. spark的foreach(println)看不到输出结果
  9. 对mask进行rle编码然后进行解码-详细注释
  10. Fatal error compiling: 无效的目标发行版: 3.1