2012-03-03 8 views

risposta

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

potrebbe non funzionare come previsto se hai alias "ls" – rbedger

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

trovare tutti i file (-type f) nella directory corrente (-depth 1) che non corrisponde al nome del file (-not -name '*.lnx') e li (-delete)

eliminare Come sempre, testare questa prima. Eseguirlo senza il -delete per vedere tutti i file che corrispondono.

+0

'tipo f' non è necessaria. Non ha detto che voleva escludere le directory. – Manish

+4

"Quindi per rimuovere tutti i file" – nachito

14

È possibile utilizzare 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

Buono, ma si noti che è necessario abilitare 'extglob' (con' shopt -s extglob') per utilizzare questo. – Kevin

+0

In Ubuntu: 'extglob' è impostato su ON. – kev

+0

Mi sono perso dove ha detto che è su Ubuntu? Non lo vedo dichiarato o implicito da nessuna parte. Indipendentemente da ciò, non sarà necessariamente per tutti quelli che vengono a questa discussione per una risposta, quindi vale la pena di notare. – Kevin

Problemi correlati