2012-03-03 6 views

Respuesta

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

puede no funcionar como se espera si has alias'ed 'ls' – rbedger

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

encontrar todos los archivos (-type f) en el directorio actual (-depth 1) que no coincide con el nombre de archivo (-not -name '*.lnx'), y eliminarlos (-delete)

Como siempre, pruebe esto primero. Ejecútelo sin -delete para ver todos los archivos que coincidan.

+0

'F' de tipo no es necesario. Él no dijo que quería excluir directorios. – Manish

+4

"Para eliminar todos los archivos" – nachito

14

Puede utilizar 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

Bueno, pero tenga en cuenta que necesitará 'extglob' habilitado (con' shopt -s extglob') para usar esto. – Kevin

+0

En Ubuntu: 'extglob' está activado por defecto. – kev

+0

¿Eché de menos dónde dijo que está en Ubuntu? No lo veo ni indicado ni implícito en ningún lado. A pesar de todo, no necesariamente va a suceder para todos los que acudan a este hilo por una respuesta, así que vale la pena señalarlo. – Kevin

Cuestiones relacionadas