2016-03-20 3 views
0

Ich habe diese Zeile in meinem SkriptBash Filtering Strings mit anderen als alphanumerischen Zeichen

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

Und es bassicaly findet nur alle nicht-versteckten Dateien und druckt seine Verlängerung eines pro Zeile, sortiert dann nach Duplikaten, so ein Ausgang könnte zum Beispiel:

exe 
c 
x 
png 
lg_CNG 
new 
lib-old 
s 

ich das aus, es auch in alphabetischer Reihenfolge sein sollte, aber meine Frage ist, kann ich das irgendwie ausschließen in ihnen ein nicht-alphabetisches Symbol mit (_, -,/, .....)? Danke

+1

Inspiration finden hier http://stackoverflow.com/questions/22491064/remove-all-lines- beginnend mit einem Kleinbuchstaben –

+0

@FredrikPihl Ich habe versucht und '| hinzugefügt sed '/^[[: alnum:]]/d''scheint in meinem Fall nicht zu funktionieren, es druckt überhaupt nichts – toddddos

+0

Ich weiß nicht, auf welcher Eingabe Sie Ihre' sed' auf aber ' sed '/ [[: punct:]]/d''scheint für mich zu arbeiten. In Ihrer Ausgabe werden 'lg_CNG' und 'lib_old' entfernt. Das wird erwartet, oder? –

Antwort

1

ich ein wenig Änderung Ihrer Herkunft Befehl gemacht haben, funktioniert es für mich:

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