列出某目录下包含某字符串的文件以及个数(不包含的除外)

2024-06-10 17:58

本文主要是介绍列出某目录下包含某字符串的文件以及个数(不包含的除外),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

递归列出某目录下包含某字符串的Java文件以及个数(不包含的除外)并按倒序排列

方法一:

$ find  . -name "*.java" | xargs grep -c "Auto" | awk -F ":" '($2>0) {print $0}' |  sort -t ":" -k 2,2nr

 

方法二:

$ find . -name "*.java"  |  xargs grep  "Auto" | awk -F ":" '{a[$1]++}END{for(i in a) {print i,a[i]}}' | sort -k 2,2nr

方法1详解:

1)grep -c "字符串" 文件名   列出某文件中含有某字符串的个数

$ grep -c "Auto" ./atfcapi-tools-data/src/main/java/db/tables/records/AutoSoaResultRecord.java
46

2)递归列出目录下某字符串的Java文件以及个数

$      find  . -name "*.java" | xargs grep -c "Auto"
./atfcapi-tools-data/src/main/java/atfcapi/tools/db/tables/ResponseKey.java:0
./atfcapi-tools-data/src/main/java/atfcapi/tools/db/tables/records/HttpThriftAutoscanConfRecord.java:30
./atfcapi-tools-data/src/main/java/atfcapi/tools/db/tables/records/PictLogRequestRecord.java:0
./atfcapi-tools-data/src/main/java/atfcapi/tools/db/tables/records/PressureConfigRecord.java:7
./atfcapi-tools-data/src/main/java/atfcapi/tools/db/tables/SoaAutoscanConf.java:28

3) 从2 中取出个数为0 的

$      find  . -name "*.java" | xargs grep -c "Auto" | awk -F ":" '($2>0) {print $0}'

awk将结果每行按照“:”分割, 读取第二个域,只打印第二个域大于0的

4)对结果进行排序

find  . -name "*.java" | xargs grep -c "Auto" | awk -F ":" '($2>0) {print $0}' |  sort -t ":" -k 2,2nr

对结果截取第二个域名 并按照第二个域排序 

sort 按照某个域排序  sort -k n,n就是按照第 n个域排序, 为什么写2,2呢?第一个2是排序的起始域,第二个2是是排序的终止域

在本例中如果写下面的命令结果也是一样的

因为“./atfcapi-tools-data/src/main/java/atfcapi/tools/db/tables/SoaAutoscanConf.java:28”使用":"分割后只有两个域,如果有更过的域, 写成 sort -k 2的话就是按照第二个域以后所有的字符来排序

find  . -name "*.java" | xargs grep -c "Auto" | awk -F ":" '($2>0) {print $0}' |  sort -t ":" -k 2nr

方法二中使用到的是awk数组

awk具体使用方法请查看https://blog.csdn.net/u011517841/article/details/53390810

可以理解为awk数组就是按照某个key来分类

方法二详解:

$ find . -name "*.java"  |  xargs grep  "Auto"
PictController.java:import org.springframework.beans.factory.annotation.Autowired;
./atfcapi-tools-app/src/main/java/atfcapi/tools/controller/PictController.java:    @Autowired
./atfcapi-tools-app/src/main/java/atfcapi/tools/controller/PictController.java:    @Autowired
./atfcapi-tools-app/src/main/java/atfcapi/tools/controller/PictController.java:    @Autowired
./atfcapi-tools-app/src/main/java/atfcapi/tools/controller/PictController.java:    @Autowired
./atfcapi-tools-app/src/main/java/atfcapi/tools/controller/PictController.java:    @Autowired
./atfcapi-tools-app/src/main/java/atfcapi/tools/controller/PictController.java:    @Autowired
./atfcapi-tools-app/src/main/java/atfcapi/tools/controller/PictController.java:    @Autowired
./atfcapi-tools-app/src/main/java/atfcapi/tools/controller/UploadFileController.java:import org.springframework.beans.factory.annotation.Autowired;
./atfcapi-tools-app/src/main/java/atfcapi/tools/controller/UploadFileController.java:	@Autowired
./atfcapi-tools-app/src/main/java/atfcapi/tools/controller/UnitTestController.java:import org.springframework.beans.factory.annotation.Autowired;
./atfcapi-tools-app/src/main/java/atfcapi/tools/controller/UnitTestController.java:    @Autowired
./atfcapi-tools-app/src/main/java/atfcapi/tools/controller/UnitTestController.java:    @Autowired
./atfcapi-tools-service/src/main/java/atfcapi/tools/util/CollectLogInfoUtil.java:import org.springframework.beans.factory.annotation.Autowired;
./atfcapi-tools-service/src/main/java/atfcapi/tools/util/CollectLogInfoUtil.java:    @Autowired
./atfcapi-tools-service/src/main/java/atfcapi/tools/service/impl/UnitTestServiceImpl.java:import org.springframework.beans.factory.annotation.Autowired;
./atfcapi-tools-service/src/main/java/atfcapi/tools/service/impl/UnitTestServiceImpl.java:    @Autowired
./atfcapi-tools-service/src/main/java/atfcapi/tools/service/impl/UnitTestServiceImpl.java:    @Autowired
./atfcapi-tools-service/src/main/java/atfcapi/tools/service/impl/UnitTestServiceImpl.java:    @Autowired
./atfcapi-tools-service/src/main/java/atfcapi/tools/service/impl/UnitTestServiceImpl.java:    @Autowired
$     find . -name "*.java"  |  xargs grep  "Auto" | awk -F ":" '{a[$1]++}END{for(i in a) {print i,a[i]}}'
./atfcapi-tools-service/src/main/java/atfcapi/tools/service/impl/SoaCaseSchemaImpl.java 2
./atfcapi-tools-app/src/main/java/atfcapi/tools/configure/DatabaseConfiguration.java 4
./atfcapi-tools-service/src/main/java/atfcapi/tools/service/impl/ApiOperateService.java 10
./atfcapi-tools-app/src/main/java/atfcapi/tools/controller/ProjectController.java 7
./atfcapi-tools-service/src/main/java/atfcapi/tools/service/impl/ElecocoServiceImpl.java 2
./atfcapi-tools-data/src/main/java/atfcapi/tools/db/tables/interfaces/IPressureConfig.java 2
./atfcapi-tools-app/src/main/java/atfcapi/tools/controller/SendRequestController.java 4
./atfcapi-tools-service/src/main/java/atfcapi/tools/service/impl/ParametersListServiceImpl.java 2
./atfcapi-tools-app/src/main/java/atfcapi/tools/controller/ApiOperateController.java 2
./atfcapi-tools-service/src/main/java/atfcapi/tools/service/impl/ApplyReporterServiceImpl.java 2
./atfcapi-tools-app/src/main/java/atfcapi/tools/controller/PressureConfigController.java 2
./atfcapi-tools-data/src/main/java/atfcapi/tools/db/tables/daos/SoaAutoscanConfDao.java 34

 

awk 按照某个key分类的方法见https://blog.csdn.net/u011517841/article/details/53390810

awk -F ":" '{a[$1]++}END{for(i in a) {print i,a[i]}}' 这里就是按照JAVA类分类

 

 

 

这篇关于列出某目录下包含某字符串的文件以及个数(不包含的除外)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1048870

相关文章

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

python修改字符串值的三种方法

《python修改字符串值的三种方法》本文主要介绍了python修改字符串值的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录第一种方法:第二种方法:第三种方法:在python中,字符串对象是不可变类型,所以我们没办法直接

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

C#中字符串分割的多种方式

《C#中字符串分割的多种方式》在C#编程语言中,字符串处理是日常开发中不可或缺的一部分,字符串分割是处理文本数据时常用的操作,它允许我们将一个长字符串分解成多个子字符串,本文给大家介绍了C#中字符串分... 目录1. 使用 string.Split2. 使用正则表达式 (Regex.Split)3. 使用

python获取当前文件和目录路径的方法详解

《python获取当前文件和目录路径的方法详解》:本文主要介绍Python中获取当前文件路径和目录的方法,包括使用__file__关键字、os.path.abspath、os.path.realp... 目录1、获取当前文件路径2、获取当前文件所在目录3、os.path.abspath和os.path.re

Java中JSON字符串反序列化(动态泛型)

《Java中JSON字符串反序列化(动态泛型)》文章讨论了在定时任务中使用反射调用目标对象时处理动态参数的问题,通过将方法参数存储为JSON字符串并进行反序列化,可以实现动态调用,然而,这种方式容易导... 需求:定时任务扫描,反射调用目标对象,但是,方法的传参不是固定的。方案一:将方法参数存成jsON字

spoj705( 求不相同的子串个数)

题意:求串s的不同子串的个数 解题思路:任何子串都是某个后缀的前缀,对n个后缀排序,求某个后缀的前缀的个数,减去height[i](第i个后缀与第i-1 个后缀有相同的height[i]个前缀)。 代码如下: #include<iostream>#include<algorithm>#include<stdio.h>#include<math.h>#include<cstrin

XTU 1233 n个硬币连续m个正面个数(dp)

题面: Coins Problem Description: Duoxida buys a bottle of MaiDong from a vending machine and the machine give her n coins back. She places them in a line randomly showing head face or tail face o

android应用中res目录说明

Android应用的res目录是一个特殊的项目,该项目里存放了Android应用所用的全部资源,包括图片、字符串、颜色、尺寸、样式等,类似于web开发中的public目录,js、css、image、style。。。。 Android按照约定,将不同的资源放在不同的文件夹中,这样可以方便的让AAPT(即Android Asset Packaging Tool , 在SDK的build-tools目