列出某目錄下包含某字串的檔案以及個數(不包含的除外)
阿新 • • 發佈:2019-01-04
遞迴列出某目錄下包含某字串的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陣列就是按照某個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 -F ":" '{a[$1]++}END{for(i in a) {print i,a[i]}}' 這裡就是按照JAVA類分類