用Python遍历(Linux)的子目录并且查找出指定的字符串带(扩展名)黑白名单功能
来源:互联网 发布:广州婚纱摄影排名 知乎 编辑:程序博客网 时间:2024/06/13 08:26
《软件&网站架构师手记》之一_用Python脚本补充Linux命令的不完善之二:
用Python脚本遍历(Linux)的子目录(或文件夹)并且查找出指定的字符串,并且显示:
1、目录位置;
2、(字符串)所在的文件名;
3、字符串所在(文件中)的行号;
4、以及显示本行信息,既显示本行的(从本行开始)的256个字符。
#并且支持把扩展名放进脚本中 用数组存放的黑、白(扩展名)名单中:
既先在“白扩展名”类型的文件当中:检索,如*.txt, *.log, *.cnf, *.conf, *.php 等(类型)文件中包含的,找出来……
然后再查一遍“黑扩展名”中不包括的,既:不包括 *.myd , *.jpg, *.bmp, *. rar, *.class 等的文件,遍历查找一遍……
脚本(代码)如下:
import sys,os
filte1Type = ['conf','cnf','php','txt','log'] #,'log'] #白名单
filterType = ['MYD','myd','gif','png','bmp','jpg','jpeg','rar','zip', ##黑名单
'ico','apk','ipa','doc','docx','xls','jar',
'xlsx','ppt','pptx','pdf','gz','pyc','class']
num = 0
def search(path=None,cont=None):
if not path or not cont:
print('path or searchString is empty')
return
global num
print("\r\n[在白名单(扩展名)文件中查找-- Find in [whitename] file!:")
_loopFolde1r(path,cont)
print("%s file find" % num)
print("\r[在白名单(扩展名)文件中找到:%s个\r\n" % num)
print("\r\n")
print("\r\n[在刨除黑名单(扩展名)的文件中查找-- Find in [!Blackname!] file!!:")
_loopFolde2r(path,cont)
print("\r\n[刨除 黑名单(扩展名)文件的数量:%s" % num)
def _loopFolde1r(path,cont): #此过程(函数)用来只检查扩展名为白名单的
arr = path.split('/')
if not arr[-1].startswith('.'): #不检查隐藏文件夹
if os.path.isdir(path):
folderList = os.listdir(path)
for x in folderList:
_loopFolde1r(path+"/"+x,cont)
elif os.path.isfile(path):
if path.split('.')[-1].lower() in filte1Type:
_verifyContent(path,cont)
def _loopFolde2r(path,cont): #此过程只检查(扩展名)不包含黑名单的
arr = path.split('/')
if not arr[-1].startswith('.'): #不检查隐藏文件夹
if os.path.isdir(path):
folderList = os.listdir(path)
for x in folderList:
_loopFolde2r(path+"/"+x,cont)
elif os.path.isfile(path):
if not(path.split('.')[-1].lower() in filterType):
_verifyContent(path,cont)
def _verifyContent(path,cont):
# if path.split('.')[-1].lower() in filterType:
# return
global num
fh = open(path,'r')
fhContent = fh.readlines()
fh.close()
for index,x in enumerate(fhContent):
if cont in x:
num += 1
print("%s %s" % (path,index+1))
print("%s " % x[1:256])
break
return
if __name__ == "__main__":
if len(sys.argv) < 3:
print("invalid parameters")
print("下面这个Demo数据仅仅为了测试方便,完全可以忽略……请您(使用者)重新输入参数就OK了!")
search("/www", "cknow.net") #这个Demo数据仅仅为了测试方便,完全可以删除,删除后让使用者重新输入参数就OK了!
else:
search(sys.argv[1],sys.argv[2])
----------------------------------------------
后记:
--
Python(写的)脚本真是简洁!
但放到csdn来 Python的“缩进”全乱…… 所以我认为这是Python唯一“讨厌”的地方……
在学习解决办法中……!!
为显示缩进情况,拷屏 了一部分代码的显示……
文章中代码是完整的,只是Python代码中的“缩进”被 csdn的文章发布系统“吃掉”了!?
- 用Python遍历(Linux)的子目录并且查找出指定的字符串带(扩展名)黑白名单功能
- Python 在当前目录以及其子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
- 编写一个Python程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径
- python 文件和目录 当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
- Python:编写函数,能在当前目录以及子目录下查找文件名包含指定字符串的文件,并打印出完整路径
- Python 遍历目录并打印出子目录的大小
- Linux查找当前目录及其子目录下所有包含指定字符串的文件
- LINUX 在 指定目录下,包括子目录,查找文件中内容匹配的字符串
- strust2Interceptor的黑白名单
- 在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径
- 黑白名单的具体实现
- iptables的黑白名单机制
- Perl初级教程 (5) 遍历文件夹内指定扩展名文件,查找匹配关键字的输出。
- 遍历整个文件夹,查找特定扩展名的文件,更改文件的前4个字节,并且改名字
- 查找当前目录和子目录下包含指定字符串的文件
- delphi 查找指定目录,指定扩展名的所有文件名
- Linux 查找含有指定字符串的文件
- Linux查找指定字符串的命令
- 无法将类型为"Microsoft.Office.Interop.Excel.ApplicationClass"的 COM 对象强制转换
- 阿里面试题之求完全二叉树的最后一层的最后一个节点
- 常喝酵素 不易得病
- ContentProvider笔记
- 手机游戏开发工程师
- 用Python遍历(Linux)的子目录并且查找出指定的字符串带(扩展名)黑白名单功能
- Hadoop Hive与Hbase整合
- Android webview使用大全
- IntelliJ Idea 常用快捷键
- Mac中使用mysql数据库基础(上)
- 覆盖,重写,重载,隐藏,多态的区别(一下子清晰了)
- cocos2d-x +lua
- Foreman配置bug
- C++ std::pair 与 std::make_pair