本文主要是介绍列出某目录下包含某字符串的文件以及个数(不包含的除外),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
递归列出某目录下包含某字符串的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类分类
这篇关于列出某目录下包含某字符串的文件以及个数(不包含的除外)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!