GNU/Linux >> Linux Esercitazione >  >> Linux

Come eliminare tutti i file in una directory tranne alcuni?

A rm tutti tranne u,p in bash basta digitare:

rm !(u|p)

Ciò richiede l'impostazione della seguente opzione:

shopt -s extglob

Per saperne di più:glob - Wiki di Greg


Quello che faccio in questi casi è digitare

rm *

Quindi premo Ctrl +X ,* per espandere * in tutti i nomi di file visibili.

Quindi posso semplicemente rimuovere i due file che mi piace tenere dall'elenco e infine eseguire la riga di comando.


Puoi usare find

find . ! -name u ! -name p -maxdepth 1 -type f -delete
  • ! nega l'espressione successiva
  • -name specifica un nome file
  • -maxdepth 1 farà in modo che find process solo la directory specificata (find per impostazione predefinita attraversa le directory)
  • -type f elaborerà solo i file (e non per esempio le directory)
  • -delete eliminerà i file

Puoi quindi regolare le condizioni guardando la pagina man di find

Aggiorna

  • Tieni presente che l'ordine degli elementi delle espressioni è significativo (vedi la documentazione)
  • Prova prima il tuo comando usando -print invece di -delete

    find . ! -name u ! -name p -maxdepth 1 -type f -print
    

Linux
  1. Elimina tutti i file tranne che in una determinata sottodirectory con Trova?

  2. Come trovare tutti i file sparsi in Linux

  3. Come trovare tutti i file che terminano con .rb con Linux?

  4. Come gzippare tutti i file in tutte le sottodirectory in bash

  5. Come posso trovare tutti i file hardlink su un filesystem?

Come contare i file nella directory in Linux

Shell - Come trovare la directory di alcuni comandi?

Come trovare tutti i file con una particolare directory principale in Linux?

Come contare il numero di file in ogni directory?

Elimina i file corrispondenti in tutte le sottodirectory

Come trovare tutti i file a zero byte nella directory