Bash过滤除字母数字符号以外的字符串

时间:2016-03-20 13:40:54

标签: bash sh

我的剧本中有这一行

find $DIR -type f \( -iname "*.*" ! -iname ".*" \) | awk -F. '{print $NF}' | sort -u 

它的bassicaly只找到每个非隐藏文件并在每行打印一个扩展名,然后对重复项进行排序,因此输出可以是例如:

exe 
c
x
png
lg_CNG
new
lib-old
s

我做了这个,它应该按字母顺序排列,但我的问题是我可以以某种方式排除那些在其中有任何非字母符号(_, - ,/,.....)?谢谢

1 个答案:

答案 0 :(得分:1)

我对你的原始命令做了一些改动,它对我有用:

find . -type f -iname '*' ! -iname '.*' | sed -r -e '/[-_]/d' | awk -F'.' '{ print $NF }' | sort -u