Com copiar amb cp i excloure arxius o directoris interns (equivalent a rsync -exclude)

Si jo els demanés que esmentin una ordre per copiar una carpeta cap a un altre lloc, gairebé tots esmentarien a cp.

Ara, si els dic que a més, han de copiar tot el contingut d'aquesta carpeta excepte 1 arxiu, aquí molts es quedarien pensant, i altres esmentarien a rsync, Ja que amb el paràmetre -exclude es pot excloure X arxiu o carpeta i no copiar-la. Però ... sabien que cp també permet fer això? ... O_O ... si amics, cp té el seu propi «exclude» jeje.

Per exemple, tenim la carpeta isos que conté: ubuntu.iso, debian.iso y archlinux.iso :

I passa que desitgem copiar cap a l'altra carpeta (distros-deb, Que està buida) l'arxiu debian.iso y ubuntu.iso, És a dir, tots menys archlinux.iso

Per això podríem copiar un arxiu i després un altre, manualment, però és molt més intel·ligent usar les opcions que ens ofereix el sistema no? ... 😀 ... per exemple, per fer això n'hi ha prou amb:

cp isos/!(archlinux.iso) distros-deb/

I això n'hi ha prou perquè es copiï TOT el que contingui el directori isos cap distros-deb, tot excepte archlinux.iso 😉

Però suposem que no només tenim aquests 3 arxius, sinó que a més tenim fedora.iso i chakra.iso ... i volem fer el mateix, quedaria excloure també de la còpia fedora.iso i chakra.iso, vegem com fer-ho:

cp isos/!(archlinux.iso|fedora.iso|chakra.iso) distros-deb/

Com poden veure, es pot excloure diversos arxius o carpetes, només els separem per una canonada (|) I assumpte resolt 😀

Amb això no vull dir que cp sigui millor per a tot que rsync ... però, tots dos són excel·lents eines, per exemple ... ¿coneixien el paràmetre -u de cp? ... jeje, segur que no 😉

Bé, res més que afegir ... ¿a que aquest és un interessant tip? 😀

Salutacions


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: Miguel Ángel Gatón
  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ó.

  1.   Josh va dir

    No coneixia aquest mètode, sempre s'aprèn alguna cosa nova.
    Excel·lent tip, gràcies.

    1.    KZKG ^ Gaara va dir

      gràcies

  2.   croto va dir

    Molt bo el tip, no el coneixia! Només resta explicar-los als usuari d'Arch i Fedora perquè excluiste seus iso's jeje

    1.    KZKG ^ Gaara va dir

      Jajajajajaja no vaig posar els ISOs d'Arch i Fedora perquè l'exemple tractava d'copiar només distros Deb ... jajajajaja.

  3.   hexborg va dir

    Aquí cal fer un parell de puntualitzacions. Una és que això només funciona si està activada l'opció extglob de l'bash. Si no ho està s'activa amb aquesta comanda:

    shopt -s extglob

    Es pot posar al .bashrc per tenir-la activada sempre.

    L'altra puntualització és que aquest truc no és una opció de la comanda cp, sinó que funciona a nivell de l'bash. El que significa que es pot usar amb qualsevol comandament. No només amb cp. Podeu fer la prova escrivint:

    trobo Fitxers: isos /! (archlinux.iso | fedora.iso | chakra.iso)

    Per la resta és un truc molt útil. Juntament amb l'opció -u de cp, que també em resulta útil de tant en tant.

    1.    Daniel Rojas va dir

      És clar, és una expressió regular

      1.    hexborg va dir

        En realitat és un patró estès. Una expressió regular és una altra cosa, però es sembla. 🙂

    2.    KZKG ^ Gaara va dir

      Sí, la -o de cp és veritablement interessant. Reconec que sóc un gran fan de rsync ... però no sé, li tinc afecció a el pobre cp hahaha.

      Sobre el d'activar shopt, no ho sabia, vaig assumir que això funcionava automàticament, gràcies per la dada.

      I sí, estava sospitant que tenia més a veure amb Bash que amb cp, però encara no havia provat fer un rm o cat o alguna cosa així 🙂

      Gràcies pel comentari, de debò que sí 😀

      1.    hexborg va dir

        És un plaer aportar el meu granet de sorra. 🙂

        1.    KZKG ^ Gaara va dir

          De fet, sempre he estat interessat en aprendre d'expressions regulars ... ¿et embullas i fas un post per novells sobre això? 😀

          1.    hexborg va dir

            ¡Jajajaja !! Ja m'heu liat. 🙂 Amb el feliç que estava jo sense comentar ... 🙂

            Doncs la veritat és que m'està trucant. 🙂 Però encara he de pensar-ho un poc. Sembla difícil d'explicar.

            1.    KZKG ^ Gaara va dir

              jajajajaja res no et preocupis, tu segueix comentant que així igual s'aprèn Ajajajaja, l'important és compartir 😀


  4.   tufadorin va dir

    Molt bon tip.Nunca jauràs sense aprendre alguna cosa nova.

    1.    KZKG ^ Gaara va dir

      Exacte, i el millor de tot és que jo aprenc moltíssim amb els comentaris que vostès deixen en els posts, m'encanta aprendre coses rares cada dia JAJAJA.

  5.   Giskard va dir

    Bon truc. No el coneixia 🙂

    1.    KZKG ^ Gaara va dir

      Un plaer 😉

  6.   @Jlcmux va dir

    Però quan poses isos et refereixes a posar debian.iso ubuntu.iso /! (Etc etc)? no

  7.   Heber va dir

    Efectivament va resultar ser un tip molt interessant. No només per l'article en si, sinó també pel valor afegit dels comentaris.
    Bella comunitat la de <º Linux

  8.   MARTA EL POU va dir

    no m'ha servit de res la teva ajuda, hauries de posar algun exemple, perquè els estudiants puguem entendre millor la teva magnífica tècnica.
    Gràcies per dedicar-me un temps, sempre recordaré aquesta pàgina en el meu cor

  9.   felip016 va dir

    dius que omets directoris, però en els exemples només omets arxius, saps com ometre un directori en particular? salutacions.