Jak wypisać każde inne rozszerzenie pliku używając wyrażenia regularnego na Linuksie?

1

Mam następujące polecenie, które wyświetla listę wszystkich plików, które mają rozszerzenie .swf jednak chciałbym zwrócić listę każdego pliku, który nie ma rozszerzenia .swf

find . -maxdepth 1 -regextype posix-egrep -regex '.*/.*\.swf' -exec echo {} \;
PeanutsMonkey
źródło

Odpowiedzi:

3

Po prostu zaneguj warunek

-not -regex '.*/.*\.swf'
tink
źródło
To działa jak urok. Czy jest jednak sposób na używanie wyrażeń regularnych?
PeanutsMonkey
Hmmm ... a -regex '. * /. * [^ s] [^ w] [^ f]' rodzaj prac, jak sądzę.
tink
1

Jeśli chcesz tylko pliki, które nie mają .swf rozszerzenie, po prostu użyj wstecz grep :

find . -maxdepth 1 -type f | grep -v *\.swf

Lub zaneguj -name ze znalezieniem:

find . -maxdepth 1 ! -name "*\.swf"
terdon
źródło