2016-03-20 58 views
0

我此行我的脚本猛砸过滤字符串与其他不是字母数字符号

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

它bassicaly只是找到每个非隐藏文件和打印其延长每行一个,然后排序的重复,所以一输出可以是例如:

exe 
c 
x 
png 
lg_CNG 
new 
lib-old 
s 

我编的,它应该是按字母顺序排列好,但我的问题是,我可以以某种方式排除那些在他们(任何非字母符号_, - ,/ ,......)?谢谢

+1

这里http://stackoverflow.com/questions/22491064/remove-all-lines-找到一些灵感以小写字母开头 –

+0

@FredrikPihl我试过并添加了'| sed'/^[[:alnum:]]/d''在我的情况下似乎不起作用,它根本不打印任何东西 – toddddos

+0

不知道你在运行'sed'的输入是什么, sed'/ [[:punct:]]/d''似乎对我有用。在你的输出中,'lg_CNG'和'lib_old'被删除。这是预料的,对吧? –

回答

1

我已经做了一点改变你的出身命令,它为我工作:

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