如何在站点静态文件下查找某关键字并修改文件名?
前段时间,因关于某些政治性的内容,公司部分站点需要做处理,而且数据库只保存近几年的,无法通过数据库删除或修改早些年的静态页面数据
站点文件个数,不会少于几百万,我想大家不会一个个手工查找吧!也许真的有人那样搞呢,我只能“呵呵”了
用程序思想去解决工作中遇到的问题,很有必要!
站点环境: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
如何在站点静态文件下查找某关键字并修改文件名?相关推荐
- matlab 列表 剪切,利用Matlab进行文件批量复制、剪切和修改文件名
文件批量复制.剪切和修改文件名 电脑环境 文件批量复制 文件批量剪切 批量修改文件名 批量修改文件名和复制(剪切) 电脑环境 MATLAB:2018a Windows:win10 文件批量复制 clo ...
- linux 删除含有关键词的文件_linux下查找包含关键字的文件
在linux下如果要查找包含某个关键字的文件,如要在nagios目录下搜索带有关键字"store-rd-sys"的文件,在终端下运行命令: /usr/local/nagios/et ...
- Linux shell 对于文件的删除,复制,修改文件名等操作
2019独角兽企业重金招聘Python工程师标准>>> 修改文件名或者修改文件夹名 mv file1 file2 把当前目录下的file1文件名改成file2,如果该目录下有file ...
- adb shell 修改文件名_教你三招快速文件批量重命名方法-linux修改文件名
在我们的工作生活中,不管是程序员还是非程序员,我们都会遇到过一个需求,那就是对一堆的文件进行重命名.在Windows下有很多优秀的软件可以帮助我们完成这个需求,而在Linux环境下,我们可以简单敲一些 ...
- linux目录命令改目录名,Linux命令详解——文件和目录常用命令-linux修改文件名...
文件和目录常用命令 查看目录内容 ls 切换目录 cd 创建和删除操作 touch rm mkdir 拷贝和移动文件 cp mv 查看文件内容 cat more grep 其他 echo 重定向 &g ...
- PHP获取文件名称表格,并批量修改文件名
前言 本文是自己在进行项目编写时遇到的情况,需求是提取目录中的pdf文件名,判断是否对应的压缩文件,生成相应的表格,并重命名文件. 实现效果 起始 结果 代码 <?php/*** 列出文件表格* ...
- linux find 文件夹下查找字符串
1. find / -name "*" | xargs grep "route" 在根文件夹下查找含有关键字route的文件,列出文件名和route所在行. 2 ...
- linux怎么在目录下查找文件,linux find-在指定目录下查找文件
find命令用来在指定目录下查找文件.任何位于参数之前的字符串都将被视为欲查找的目录名.如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件.并且将查找到的子目录和文件全部进 ...
- c语言;文件名批量修改要求可以修改整个文件内文件名或后缀名自动,Python批量修改文件名...
处理语料库时,有些文件名字很不规则,为了方便处理,同义按数字顺序修改名称,主要是用到os模块: import os def RenameFiles(srcdir): #将目录下所有的文件命名为数字开头 ...
最新文章
- 机房收费--一般用户
- 在Spring Controller中将数据缓存到session
- C++实现bellman ford贝尔曼-福特算法(最短路径)(附完整源码)
- centos7救援模式--单机模式(单用户模式)
- 分享一个学习cocos-html5的链接
- Unity的camera组件
- 【系统架构设计师】软考高级职称,一次通过,2017年下半年系统架构设计师考试论文真题(论软件架构风格)
- Oracle误操作--被提交后的数据回退(闪回)
- [Python+debug] 设置Python环境变量-Windows10
- Nginx源码分析 - Event事件篇 - Nginx的Event事件模块概览(17)
- 数据挖掘10大算法及详解
- 需求分析中系统参与者的概念和确定
- 打开计算机硬盘是个磁盘图标 不显示大小,硬盘图标显示异常的解决办法
- dw版权信息栏如何制作_Dreamweaver怎么制作网页模板
- 苹果cms永久免费影视建站程序
- c语言循环语循环控制,C语言.控制语循环语句.ppt
- 长期执业的顶尖领先律所ROSEN提醒Mylan N.V.投资者注意MYL证券集体诉讼的重要截止日期为8月25日
- 硬件混合渲染器 (HWC)
- MapReduce快速入门系列(4) | Hadoop序列化
- 城市巡游赛(树和图)
热门文章
- 推荐一个博客,或许给技术流的自己一些启示
- 乐迪机器人开热点_碧桂园餐饮机器人量产!预计年产能达4000台
- [译] 单元测试,精益创业,以及两者之间的关系
- Repeater的嵌套结合用户控件的使用
- 有趣的insert死锁
- kaggle为什么总是难以拿到金牌
- flink的scala版本的wordcount+flink没有输出结果的几种原因
- spark的foreach(println)看不到输出结果
- 对mask进行rle编码然后进行解码-详细注释
- Fatal error compiling: 无效的目标发行版: 3.1