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

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

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. 自连接<EntityFramework6.0>

    自引用 public class PictureCategory { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int ...

  2. meta 详解,html5 meta 标签日常设置

    <!DOCTYPE html> <!-- 使用 HTML5 doctype,不区分大小写 --> <html lang="zh-cmn-Hans"&g ...

  3. mybatis map常用数据类型

    JDBC Type Java Type CHAR String VARCHAR String LONGVARCHAR String NUMERIC java.math.BigDecimal DECIM ...

  4. 数组中pop()和reverse()方法调用

    数组的倒序排列,可以采用reverse()和pop()方法进行排列.

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

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

  6. iOS之关于开发的那点破事(一)

    前言: 前段时间,经理突然找我说:能不能在项目中对缓存的图片进行加密?当时就感到疑惑,就说:可以是可以,但为什么要这样做?有什么意义没? 我们都知道,apple使用的沙盒(sandbox)机制,这种机 ...

  7. The innocence is brilliant.

    [11.20~12.20] 2016年的最后一个月在听Avril的歌,感觉她发音状态好好(对此建议去听<Wish You Were Here>!!!) 到此12月份的活都干完了吧~还剩最后 ...

  8. iterm2

    Mac下配置iterm2 http://www.dreamxu.com/mac-terminal/ 快捷键 http://cnbin.github.io/blog/2015/06/20/iterm2- ...

  9. Code First 关系配置整理

    之前EF一直有性能问题以及使用便利性问题, 终于到了EF6有了Migrations之后, 小弟也决定加入EF阵营了. 在学习FluentAPI配置关系的时候, 发现网上的好几个教程实际上博主自己都没有 ...

  10. 【HDU2896】病毒侵袭 AC自动机

    [HDU2896]病毒侵袭 Problem Description 当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻....在这样的时刻,人们却异常兴奋--我们能在有生之年看到500年 ...