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

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

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导出excel文件的几种方法

    方法一 用mysql的命令和shell select * into outfile './bestlovesky.xls' from bestlovesky where 1 order by id d ...

  2. Kafka vs RocketMQ——单机系统可靠性-转自阿里中间件

    引言 前几期的评测中,我们对比了Kafka和RocketMQ的吞吐量和稳定性,本期我们要引入一个新的评测标准--软件可靠性. 何为"可靠性"? 先看下面这种情况:有A,B两辆越野汽 ...

  3. APPCAN开发笔记:html页面之间的参数传递:使用js获取url中的参数,以及在APPCAN中不能使用的解决方法

    用PHP的GET/POST方式来传递方式已经是司空见惯了,但是如果我的页面是一个静态的html的页面,想传递参数的时候要怎么办呢?在APPCAN的开发中我们会经常遇到这样的问题,因为所有的页面都是静态 ...

  4. 运用泛型,冒泡排序实现JDK引用类型数组的排序

    public class Utils { public static <T extends Comparable<T>> void sortList(List<T> ...

  5. poj3311 TSP经典状压dp(Traveling Saleman Problem)

    题目链接:http://poj.org/problem?id=3311 题意:一个人到一些地方送披萨,要求找到一条路径能够遍历每一个城市后返回出发点,并且路径距离最短.最后输出最短距离即可.注意:每一 ...

  6. 疑难问题解决备忘录(2)——ubuntu12.04分配swap

    分配swapdd if=/dev/zero of=Swap.disk bs=1M count=6k (count=1k创建1G的Swap,如果要创建6G则count=6k:这步比较慢) 创建swap文 ...

  7. js实现阶乘

    //while循环实现function calNum(n) { var product = 1; while(n > 1){//1*5*4*3*2,1*n*(n-1)*(n-2)*...*2 p ...

  8. 浅谈ajax

    Ajax 回顾 最本质的 ajax 其实是这样的: function Ajax(){ var xmlHttpReq = null; if (window.ActiveXObject){//IE5 IE ...

  9. 给li标签添加自定义属性

    给li标签添加属性<ul> <li></li> <li></li> <li></li> <li>< ...

  10. spring动态代理

    接下来我们来体会下动态代理带给我们的便利 package aop006; public interface Girl { public void KFC(String datetime); publi ...