我有一个如下文件。
A ctrl/bng/h2ert/scratch/TestAccountService.java
A ctrl/bng/h2ert/scratch/TestAccount.java
A ctrl/bng/h2ert/scratch/TestT.java
A ctrl/bng/h2ert/scratch/TestAccountService.jpg
A ctrl/bng/h2ert/scratch/TestService.txt
A ctrl/bng/h2ert/scratch/TestAccountService.txt
我想列出.java
上面的所有文件名,例如
Total java file 4
然后是文件名
答案1
$ grep -c '\.java$' file
3
标志-c
togrep
将使其报告输入中与模式匹配的行数。
该模式\.java$
将匹配任何以 结尾的行.java
。
$ name="file"
$ printf 'Total number of Java files in "%s":\t%d\n' "$name" "$( grep -c -- '\.java$' "$name" )"
Total number of Java files in "file": 3
或者甚至只是(使用 GNUgrep
或兼容):
$ grep -Hc '\.java$' file
file:3
或者(仍然使用 GNU grep
):
$ grep --label='Total java files in "file"' -Hc '\.java$' < file
Total java files in "file":3
答案2
仅供记录,一直以来经典的 awk:
awk '/\.java$/{++c}END{print "Total java files:" c}' file
如果您还想打印这些文件名,您可以更改{++c}
为{print;++c}
.
答案3
perl -lne '$a += s/\.java$//}{print"Total java file $ARGV: ", $a||0' java_file
该s///
命令返回累积的替换次数,$a
并在最后打印结果。该$a||0
表达式用于在行尾找不到 .java 的情况。
perl -lne '$a += /\.java$/}{print"Total java file $ARGV: ", $a||0' java_file
这次我们进行无损测试来确定.java的存在。其余细节相同。