Com eliminar tots els fitxers d'un directori menys un

eliminar fitxers Linux

A vegades necessites eliminar gairebé tots els fitxers d'un directori, Però vols conservar un o alguns d'ells. Quan hi ha gran quantitat d'ells, anar un a un és una tasca tediosa. No és la millor opció, hi ha formes de poder fer molt més senzill el treball en Linux i que puguis eliminar tots els que necessites d'una vegada.

Per exemple, és probable que vulguis eliminar només els que comencen per un nom determinat, o els que tenen una extensió específica, etc. Tot això és possible, De fet, en altres ocasions ja he mostrat tutorials similars a LxA. Aquí podràs seguir el tutorial pas a pas i de forma simple per a poder eliminar tots aquests fitxers que vols, excepte el que vols salvar.

I el millor és que no et caldrà instal·lar cap programa, es pot fer fàcilment amb ordres com rm i find. És a dir, programes que ja vénen preinstal·lats en qualsevol distro Linux. I per descomptat, el mètode es basarà en la recerca de patrons i utilitzar aquestes coincidències per eliminar només allò que vols.

Doncs bé, per a poder eliminar hi diverses alternatives, Que són ...

Eliminar fitxers d'un directori amb rm

Bé, per a poder fer servir el ordre rm per eliminar el que et ve de gust, has de conèixer abans algunes formes d'identificar patrons:

  • * (Llista de patrons) - coincideix amb zero o més ocurrències dels patrons especificats
  • ? (Llista de patrons) - coincideix amb zero o una ocurrència dels patrons especificats
  • + (Llista de patrons) - coincideix amb una o més ocurrències dels patrons especificats
  • @ (Llista de patrons) - coincideix amb un dels patrons especificats
  • ! (Llista de patrons) - coincideix amb qualsevol cosa excepte amb un dels patrons donats

Per a la activar extglob per poder-los fer servir, has d'executar primer la següent comanda:

<br data-mce-bogus="1">

shopt -s extglob<br data-mce-bogus="1">

Ull! No ho específic, però se suposa que tens permisos per fer aquestes operacions, i que estàs dins d'aquest directori quan executes la comanda rm. Compte amb això, ja que si ho executes en una altra ruta, pot ser que acabis eliminant fitxers que no desitja. És a dir, abans d'executar aquestes comandes, assegura't que has entrat en el directori que vols amb cd.

Ara ja pots utilitzar rm per eliminar el que et vingui de gust. Per exemple, eliminar tots els fitxers d'un directori excepte els que coincideixin amb el nom «Lxa»:

rm -v !("lxa")

També pots especificar dos o més noms que no vols eliminar. Per exemple, per evitar eliminar «lxa» i «desdelinux»:

 rm -v !("lxa"|"desdelinux") 

Pots eliminar tots els fitxers, menys els que tenen extensió .mp3. Per exemple:

 rm -v !(*.mp3) 

A l'acabar, pots tornar a desactivar extglob:

 shopt -u extglob 

Eliminar fitxers d'un directori amb find

Una altra alternativa a rm és utilitzar find per eliminar el que et ve de gust. Pots utilitzar una pipe i xargs amb rm, o fer servir l'opció -delete de find. És a dir, la sintaxi genèrica seria:

find /directory/ -type f -not -name 'PATRÓN' -delete
find /directory/ -type f -not -name 'PATRÓN' -print0 | xargs -0 -I {} rm [opciones] {}

Per exemple, imagina que vols eliminar tots els fitxers d'un directori menys els que tenen extensió .jpg, podries fer servir un d'aquests dos ordres, ja que tots dos obtenen el mateix resultat:

find . -type f -not -name '*.jpg'-delete

find . -type f -not -name '*.jpg' -print0 | xargs -0 -I {} rm -v {}

En canvi, si volguessis afegir algun patró extra, També podries. Per exemple, imagina que no vols eliminar ni els .pdf ni els .odt d'un directori:

find . -type f -not \(-name '*pdf' -or -name '*odt' \) -delete

Per descomptat, el mateix podries fer amb | i xargs com en l'exemple anterior. Per cert, hem fet servir -not per negar, però pots eliminar això per fer-ho positiu, és a dir, per eliminar els patrons que coincideixen i no excloure'ls.

Eliminar fitxers d'un directori usant la variable GLOBIGNORE

Finalment, hi ha una altra alternativa a find i rm, i és usant una variable d'entorn per assenyalar als fitxers que vols eliminar o excloure. Per exemple, imagina que vols eliminar tots els fitxers d'un directori anomenat Descàrregues salvant els .pdf, .mp3 i .mp4. En aquest cas, podries fer el següent:

cd Descargas
GLOBIGNORE=*.pdf:*.mp4:.*mp3
rm -v *
unset GLOBIGNORE


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: AB Internet Networks 2008 SL
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.