核心思想,递归
#!/bin/bash
getDir(){
for dir in $(ls $1)
do
if [ -d $dir ] ;then
#echo "$dir"
getDir `pwd`/$dir
else
a=`expr match "$dir" ".*src.*"`
if [[ $a -ne 0 && -f `pwd`/$dir ]] ;then
echo "`pwd`/$dir"
fi
fi
done
}
getDir `pwd`
shell中的字符串匹配:
- expr match 字符串 正则表达式 : expr match "src123" ".*src.*"
- sed 命令
echo src123 | sed 's/\(src\).*/\1/g' 输出 src
- grep 命令
echo src123 | grep -P 'src' -o 输出 src find . -name "*.txt" | xargs grep -P 'regex' -o
xargs会将find结果作为grep的输入,防止find结果过多无法处理
-P参数表明要应用正则表达式
-o表示只输出匹配的字符串,这样我们就可以把正则匹配到的结果拿到了
总结:
- 字符串处理和文本处理命令经常出现在各种shell脚本程序中,应熟练地掌握这些命令。
- sort、uniq、join、cut、paste、split、tr和tar与grep、sed、awk构成了linux文本处理的所有命令和工具。