2012-03-03 20 views

Odpowiedz

2
ls | grep -v '\.lnx$' | xargs rm 
+1

może nie działać zgodnie z oczekiwaniami, jeśli masz alias'ed 'ls' – rbedger

13
find . -depth 1 -type f -not -name '*.lnx' -delete 

znaleźć wszystkie pliki (-type f) w bieżącym katalogu (-depth 1), które nie pasują do pliku (-not -name '*.lnx') i usuń je (-delete)

Jak zawsze, przetestować ten pierwszy. Uruchom go bez numeru -delete, aby zobaczyć wszystkie pasujące pliki.

+0

'-type f' nie jest wymagane. Nie powiedział, że chce wykluczyć katalogi. – Manish

+4

"Aby usunąć wszystkie pliki" – nachito

14

Można użyć this:

$ rm !(*.lnx) 

!(pattern-list) 
    Matches anything except one of the given patterns. 
    A pattern-list is a list of one or more patterns separated by a ‘|’. 
+4

Dobrze, ale pamiętaj, że będziesz musiał włączyć 'extglob' (z' shopt-s extglob'), aby móc z niego korzystać. – Kevin

+0

W Ubuntu: 'extglob' jest domyślnie WŁ. – kev

+0

Czy tęskniłem za tym, gdzie powiedział, że jest na Ubuntu? Nie widzę tego nigdzie stwierdzonego ani dorozumianego. Niezależnie od tego, niekoniecznie będzie to możliwe dla każdego, kto przyjdzie do tego wątku, aby uzyskać odpowiedź, więc warto o tym pamiętać. – Kevin

Powiązane problemy