find . -iname '*.java' -exec wc -l {} \; | sort -n | cut --delimiter=. -f 1 | awk '{s+=$1}END{print s}'
find
. 查询当前目录
-iname 查询文件名,并忽略大小写
'*.java' 涉及到一点点正则,表示查询以".java"结尾的文件
-exec 后跟command命令,并且以 【{} \;】结束({}与\;中间有空格);{}应该代表的是前面查找的结果
wc -l filename 打印filename文件中的行数
那么下面这行代码的意思就应该是,打印出该目录下每个java文件的代码行数
find . -iname '*.java' -exec wc -l {} \;
接下来:
sort -n 对前面的结果进行排序,按数字进行排序,更多排序规则参见 man sort
cut 对字符串进行分割,默认分割符TAB,通过--delimiter来指定分割符,-f n 选项打印第n个字符
cut --delimiter=. -f 1
表达的意思是,以 . z作为分割符,并打印出第一个字符
awk是shell中比较强大的一个工具,会在以后专门讲一下
/*********************************************************************************/
字符串首字母大写
echo 'example' | sed -e 's/^\(.\)/\U\1/'
利用sed的查找和替换功能
sed 's/被替换的字符串/新的字符串/g'
其中被替换的字符串和新的字符串可以用正则表达式表示
^\(.\) 表示开头的一个字符并设为 组1 \U\1 \U表示转换为大写字母,\1表示前面找到的 组1
/*********************************************************************************
打印文件第13行的信息
sed -n 13p camus.properties