A volte hai bisogno rimuovere quasi tutti i file da una directory, ma vuoi mantenerne uno o alcuni di essi. Quando ce ne sono un gran numero, andare uno per uno è un compito noioso. Non è l'opzione migliore, ci sono modi per rendere il lavoro in Linux molto più semplice e che puoi eliminare tutti quelli che ti servono in una volta.
Ad esempio, potresti voler rimuovere solo quelli che iniziano con un determinato nome o quelli che hanno un'estensione specifica e così via. Tutto questo è possibileIn effetti, in altre occasioni ho già mostrato tutorial simili in LxA. Qui puoi seguire il tutorial passo passo e in modo semplice per poter cancellare tutti quei file che vuoi, tranne quello che vuoi salvare.
E la cosa migliore è quella non avrai bisogno di installare alcun programma, può essere fatto facilmente con comandi come rm e find. Cioè, programmi che sono già preinstallati su qualsiasi distribuzione Linux. E, naturalmente, il metodo si baserà sulla ricerca di schemi e sull'utilizzo di tali corrispondenze per rimuovere solo ciò che desideri.
Bene, per eliminare lì diverse alternative, Quali sono…
Rimuovi i file da una directory con rm
Bene, per poter utilizzare il file comando rm Per eliminare ciò che ti senti, devi conoscere prima alcuni modi per identificare i modelli:
- * (elenco di modelli) - corrisponde a zero o più occorrenze dei modelli specificati
- ? (elenco di modelli) - corrisponde a zero o una occorrenza dei modelli specificati
- + (elenco pattern) - corrisponde a una o più occorrenze dei modelli specificati
- @ (elenco pattern) - corrisponde a uno dei modelli specificati
- ! (elenco pattern) - corrisponde a qualsiasi cosa tranne uno dei modelli dati
a abilita extglob Per utilizzarli, devi prima eseguire il seguente comando:
<br data-mce-bogus="1"> shopt -s extglob<br data-mce-bogus="1">
Ora puoi usare rm per rimuovere quello che vuoi. Per esempio, eliminare tutti i file da una directory tranne quelli che corrispondono al nome «Lxa»:
rm -v !("lxa")
Puoi anche specificare due o più nomi che non desideri eliminare. Ad esempio, per evitare di rimuovere "lxa" e "desdelinux":
rm -v !("lxa"|"desdelinux")
Puoi eliminare tutti i file, meno quelli con estensione .mp3. Per esempio:
rm -v !(*.mp3)
Alla fine, puoi tornare a disabilita extglob:
shopt -u extglob
Rimuovi i file da una directory con find
Un'altra alternativa a rm è usa find per rimuovere tutto ciò che desideri. Puoi usare pipe e xargs con rm, o usare l'opzione -delete per trovare. Cioè, la sintassi generica sarebbe:
find /directory/ -type f -not -name 'PATRÓN' -delete find /directory/ -type f -not -name 'PATRÓN' -print0 | xargs -0 -I {} rm [opciones] {}
Ad esempio, immagina di volerlo eliminare tutti i file in una directory tranne quelli con estensione .jpg, potresti usare uno di questi due comandi, poiché entrambi ottengono lo stesso risultato:
find . -type f -not -name '*.jpg'-delete find . -type f -not -name '*.jpg' -print0 | xargs -0 -I {} rm -v {}
Invece, se lo volessi aggiungi qualche motivo in più, potresti farlo anche tu. Ad esempio, supponi di non voler rimuovere né .pdf né .odt da una directory:
find . -type f -not \(-name '*pdf' -or -name '*odt' \) -delete
Ovviamente potresti fare lo stesso con | e xargs come nell'esempio precedente. A proposito, abbiamo usato -non negare, ma puoi rimuoverlo per renderlo positivo, cioè per rimuovere i modelli di corrispondenza e non escluderli.
Elimina i file da una directory utilizzando la variabile GLOBIGNORE
Infine c'è Un'altra alternativa per trovare e rm, e utilizza una variabile di ambiente per puntare ai file che si desidera rimuovere o escludere. Ad esempio, immagina di voler eliminare tutti i file in una directory chiamata Download, salvando i file .pdf, .mp3 e .mp4. In tal caso, potresti fare quanto segue:
cd Descargas GLOBIGNORE=*.pdf:*.mp4:.*mp3 rm -v * unset GLOBIGNORE