文件查找——搜索当前目录下的文件

知道大概的文件名称,使用

findf FileName

findf.py

import argparse, re, os
from os.path import join parser = argparse.ArgumentParser()
parser.add_argument('FILENAME', help='file name use regular expression')
parser.add_argument('-e', metavar='EXCLUDE', default=None, help='exclude file name use regular expression') args = parser.parse_args() count = 0
for root, dirs, files in os.walk(os.getcwd()):
for name in files:
if not re.search(args.FILENAME, name):
continue
if args.e and re.search(args.e, name):
continue
count += 1
print(join(root, name))
if count <= 1:
print('\t %d file found.' % (count))
else:
print('\t %d files found.' % (count))

对应在 windows 下可以使用这样的命令:

dir /b /s FileName

在 linux 下可以使用这样的命令:

find . -name FileName -print

字符串查找——在当前目录及子目录中搜索文件包含的字符串

比如,看看哪些 java 文件中包含了 "Hello" 字符串

finds .java Hello

finds.py

import os, re, argparse
from os.path import join parser = argparse.ArgumentParser()
parser.add_argument('-c', metavar='CODING', default='utf-8', help='coding: gbk, utf-8')
parser.add_argument('EXT', help='.java, .txt')
parser.add_argument('REGEX', help='regular expression') args = parser.parse_args() for root, dirs, files in os.walk(os.getcwd()):
for name in files:
if name[-len(args.EXT):] != args.EXT:
continue
count = 0
inFile = False
for line in open(join(root, name), encoding=args.c).readlines():
count += 1
if re.search(args.REGEX, line):
print(count, '\t', line, end='')
inFile = True
if inFile:
print(join(root,name))

对应在 windows 下的命令:

findstr /s /c:"Hello" *.java

在 linux 下:

find . -name '*.java' -exec grep 'Hello' \{} \; -print

jar 包查找——查找一个类所在的 jar 包

有时候,需要使用一个类,但不知道它在哪个 jar 包中。

findj ClassName

findj.py

import os, re, sys
from os.path import join
from zipfile import ZipFile def find_in_all_jars(matchstr, path):
for root, dirs, files in os.walk(path):
for name in files:
if name[-4:] == '.jar' and handle_jar(matchstr, join(root, name)):
print(join(root, name)) def handle_jar(matchstr, filename):
isMatch = False
with ZipFile(filename) as zipfile:
for name in zipfile.namelist():
if re.search(matchstr, name):
print('\t', name)
isMatch = True
return isMatch if len(sys.argv) != 2:
print('''Usage: findj ClassName.class''')
sys.exit() #find_in_all_jars(sys.argv[1], os.getcwd()) # 在当前目录及子目录中所有 jar 包中查
find_in_all_jars(sys.argv[1], 'e:\\data\\repository')

对应的 windows 命令:

for /r %i in (*.jar) do @jar tf %i | find "FastDateFormat" && echo %i
for /r %i in (*.jar) do @jar tf %i | find "FastDateFormat" & echo %i

Linux 命令

find . -name '*.jar' -exec jar tvf \{} \| grep Hello \; -print

字数统计——统计当前目录下的代码

统计当前目录下对应文件的字数,单词数,行数

pwc .java

pwc.py

import os, re, argparse
from os.path import join parser = argparse.ArgumentParser()
parser.add_argument('-c', metavar='CODING', default='utf-8', help='coding: gbk, utf-8')
parser.add_argument('-d', action='store_true', default=False, help='print detail')
parser.add_argument('EXT', help='.java, .txt') args = parser.parse_args() nf = nl = nw = nc = 0 for root, dirs, files in os.walk(os.getcwd()):
for name in files:
if name[-len(args.EXT):] != args.EXT:
continue
nf += 1
nnl = nnc = nnw = 0
try:
for line in open(join(root, name), encoding=args.c).readlines():
nnl += 1
nnc += len(line)
nnw += len(line.split())
except:
print('Passing file error: ' + join(root, name))
nl += nnl
nc += nnc
nw += nnw
if args.d:
print("%12d%10d%8d %s" % (nnc, nnw, nnl, join(root, name))) print("%12d%10d%8d%10d Files" % (nc, nw, nl, nf))

自己动手写文件查找,字符串查找,查询jar包等工具的更多相关文章

  1. Linux查找class类所在jar包

    1.说明 写代码或者定位问题的时候, 经常发生只知道类名不知道其所在jar包的问题, 在Eclipse中可以使用Ctrl+Shift+T查找类, 但是如果类所在的jar包不在Build Path中, ...

  2. 文件上传速度查询方法(watch工具)

    由于业务迁移,需要将大量文件拷贝到目标机器上的/mnt目录,在拷贝过程中,想要查看上传的速度,做法如下:[root@mail01 ~]# du -sh /mnt5.6G /mnt[root@mail0 ...

  3. java程序打包成jar文件,使用到第三方jar包

    1.右击工程选择Export—>选择JAR file—>选择NEXT,如下图所示 2.选择需要打包的工程,并且选择存放目录,我这放在 E:\jartest 目录下,然后点击NEXT,如下图 ...

  4. 关于使用命令添加jar进自己的pom文件中-maven项目添加jar包

    现在几乎开发项目都是使用的maven项目,但是有的时候可以使用比较偏门或者新的jar可能在网上搜不到在pom文件里的配置应该如何写,因此写下这篇博客. 比如我现在想加入的AAA.jar这个包 打开cm ...

  5. SpringBoot项目打成jar包后上传文件到服务器 目录与jar包同级问题

    看标题好像很简单的样子,但是针对使用jar包发布SpringBoot项目就不一样了.当你使用tomcat发布项目的时候,上传文件存放会变得非常简单,因为你可以随意操作项目路径下的资源.但是当你使用Sp ...

  6. JDK8- interface接口可以写方法体了-- 惊 dt.jar包等

    基本上所有的Java教程都会告诉我们Java接口的方法都是public.abstract类型的,没有方法体的. 但是在JDK8里面,你是可以突破这个界限的哦. == 一个类实现某个接口,必须重写接口中 ...

  7. maven 项目pom文件引入lib下的jar包

    <dependency> <groupId>abc</groupId> <artifactId>abc</artifactId> <v ...

  8. 自动配置pom文件,构建maven项目jar包依赖关系,找到jar包运用到jmeter

    首先说下pom文件特别方便的优点: 什么是pom文件? POM(Project Object Model) 是Maven的基础. 它是一个XML文件,包含了Maven用来build项目所需要的项目配置 ...

  9. 怎么修改jar包中的class文件然后再重新打成jar包

    1.导入到eclipse中, 修改完了 然后导出jar即可 2.jar cf file.jar *.class 将当前目录下所有CLASS文件打包成新的JAR文件 3.对于补丁.之前已经有jar 例如 ...

随机推荐

  1. 连接Mysql提示Can’t connect to local MySQL server through socket的解决方法

    mysql,mysqldump,Mysqladmin,php连接mysql服务常会提示下面错误: ERROR 2002 (HY000): Can't connect to local MySQL se ...

  2. Qt中暂停线程的执行

    在线程中定义一个信号量 QMutex pause; 把run()函数中循环执行的部分用信号量pause锁住: void run() { while(1) { pause.lock(); //循环执行的 ...

  3. 寒冬之下,浩瀚智能开单收银打印扫描POS为何能在批发零售门店商场 车销行业 风靡!:进销存+打印扫描POS机

    是一款适用于商超.餐饮.服装鞋帽.家电专营等等具有零售行业特点的企业,供企业管理人员用于管理.监控本品牌的市场占有率.门店覆盖区域.网点分布合理性等经济地理信息的工具平台. 1,功能一:业务抄单文章来 ...

  4. wpf,能够复制文字 及自动识别URL超链接的TextBlock

    using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...

  5. 第一天ci框架开发商城1

    ci框架开发商城1 1/28/2016 9:43:52 PM userguide删除 system application controllers 控制器 models 模型 views 视图 模板 ...

  6. Apache Permission denied (httpd.conf配置和目录权限无问题)解决办法

    今天在CentOS5.9中配置zabbix时出现错误:Apache 403 error, (13)Permission denied: access to / denied 检查了一圈httpd.co ...

  7. Jungle Roads[HDU1301]

    Jungle Roads Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  8. 【BZOJ2073】[POI2004]PRZ 状压DP

    [BZOJ2073][POI2004]PRZ Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍 ...

  9. 【BZOJ3314】 [Usaco2013 Nov]Crowded Cows 单调队列

    第一次写单调队列太垃圾... 左右各扫一遍即可. #include <iostream> #include <cstdio> #include <cstring> ...

  10. javax.mail 发送邮件异常

    一.运行过程抛出异常 1.Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/ ...