每日一则 Linux Shell命令

find . -iname '*.java' -exec wc -l {} \; | sort -n | cut --delimiter=. -f 1 | awk '{s+=$1}END{print s}'

findjava

.             查询当前目录正则表达式

-iname              查询文件名,并忽略大小写shell

'*.java'               涉及到一点点正则,表示查询以".java"结尾的文件工具

-exec                  后跟command命令,而且以 【{} \;】结束({}与\;中间有空格);{}应该表明的是前面查找的结果spa

wc -l filename    打印filename文件中的行数code

那么下面这行代码的意思就应该是,打印出该目录下每一个java文件的代码行数排序

find . -iname '*.java' -exec wc -l {} \;

接下来:字符串

sort -n            对前面的结果进行排序,按数字进行排序,更多排序规则参见 man sortit

cut                  对字符串进行分割,默认分割符TAB,经过--delimiter来指定分割符,-f n 选项打印第n个字符
class

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
相关文章
相关标签/搜索