一、linux,基于文件大小,创建时间,修改时间,文件内容,文件名称等进行查找汇总和输出
2019-01-04
只操作文本文件
#!/usr/bin/env python # -*- coding: utf-8 -* # Created by YangYongming at 2018/12/10 17:16 # FileName: main.py import os import time import zipfile fileslist = [] # 文件列表 if not os.path.exists("temporary"): os.popen("mkdir temporary &> /dev/null") def zip_dir(dirname, zipfilename): filelist = [] if os.path.isfile(dirname): filelist.append(dirname) else: for root, dirs, files in os.walk(dirname): for name in files: filelist.append(os.path.join(root, name)) zf = zipfile.ZipFile(zipfilename, "w", zipfile.zlib.DEFLATED) for tar in filelist: arcname = tar[len(dirname):] zf.write(tar, arcname) zf.close() def Get_Cur_time(): """ # 获取当前日期和时间 :return: """ return time.strftime("%Y-%m-%d-%H-%M-%S") def Judge_filetype(filename): """ # 判断一个文件是都是文本文件 :param filename: 文件名称 :return: """ res = os.popen("file %s" % filename) if "text" in res.read(): return True else: return False def Get_FilesList(path): """ # 获取所有文件列表 :param path: 文件夹目录 :return: 所有文件绝对路径组成的列表 """ global fileslist for root, dir, files in os.walk(path): for i in files: file = os.path.join(root,i) # 拿到每个文件的绝对路径 if os.path.isfile(file): # 判断一下是否是文件 if Judge_filetype(file): # 判断是否是文本文件 if os.access(file, os.R_OK): # 判断文件是都可读 fileslist.append(file) # 添加到文件列表中 return fileslist def Content_Keyword(keyword): """ # 基于文件内容关键字查询 :param keyword: 关键字 :return: """ # 创建存储目录 global number dir = "%s[Content:%s]" % (curtime, keyword) os.popen("cd temporary && mkdir %s" % dir) for i in fileslist: # 基于linux命令拿到匹配到文本的行号 result_obj_line = os.popen("grep -n %s %s | cut -d: -f1" % (keyword, i)) # 读取行号字符串 result_line_seq = result_obj_line.read() # 把行号转换成序列,并且将序列内容连接到一起 result_line = ''.join(result_line_seq.split()) # 判断是否都为数字,如果不是全数字,说明匹配到的文本可能是二进制文件或者其他格式文件 if result_line.isdigit(): # 输出文件名称和具体的行号,使用split()把一个文件中匹配到的所有行放在一个数组中,防止字符串错乱显示 print("