Come copiare ed escludere file o directory interni da cp (equivalente a rsync –exclude)

Se ti chiedessi di menzionare un comando per copiare una cartella in un'altra posizione, quasi tutti lo menzionerebbero cp.

Ora, se ti dicessi che, inoltre, devi copiare tutto il contenuto di quella cartella tranne 1 file, molti penserebbero, e altri menzionerebbero rsync, quindi con il parametro -Escludere Puoi escludere il file o la cartella X e non copiarlo. Ma ... lo sapevi che cp ti permette anche di fare questo? ... O_O ... Sì amici, cp ha il suo "esclude" hehe.

Ad esempio, abbiamo la cartella iso contenente: ubuntu.iso, debian.iso y archlinux.iso :

E succede che vogliamo copiare nell'altra cartella (distro-deb, che è vuoto) il file debian.iso y ubuntu.iso, cioè tutti tranne archlinux.iso

Per questo potremmo copiare un file e poi un altro, manualmente, ma è molto più intelligente usare le opzioni che il sistema ci offre, giusto? ... 😀 ... ad esempio, per farlo semplicemente:

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

E questo è sufficiente per copiare TUTTO quello contenuto nella directory isos in distros-deb, tutto tranne archlinux.iso 😉

Ma supponiamo che non solo abbiamo quei 3 file, ma abbiamo anche fedora.iso e chakra.iso ... e vogliamo fare lo stesso, sarebbe anche escluso dalla copia fedora.iso e chakra.iso, diamo guarda come farlo:

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

Come puoi vedere, è possibile escludere più file o cartelle, li separiamo solo da una pipe (|) e questione risolta 😀

Con questo non intendo dire che cp sia migliore per tutto che rsync ... ma entrambi sono ottimi strumenti, per esempio ... sapevi il parametro -u de cp? ... hehe, certo che no 😉

Bene, niente altro da aggiungere ... è un suggerimento interessante? 😀

saluti


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   Josh suddetto

    Non conoscevo questo metodo, impari sempre qualcosa di nuovo.
    Suggerimento eccellente, grazie.

    1.    KZKG ^ Gaara suddetto

      Grazie

  2.   crotus suddetto

    La punta è molto buona, non lo sapevo! Resta solo da spiegare agli utenti di Arch e Fedora perché hai escluso i loro iso hehe

    1.    KZKG ^ Gaara suddetto

      JAJAJAJAJAJA Non ho messo gli ISO di Arch e Fedora perché l'esempio cercava di copiare solo le distribuzioni Deb… HAHAHAHAHA.

  3.   hexborg suddetto

    Qui dobbiamo fare un paio di punti. Uno è che funziona solo se l'opzione extglob della bash è abilitata. Se non lo è, si attiva con questo comando:

    shopt -s estglob

    Può essere messo nel .bashrc per averlo sempre attivato.

    L'altro punto è che questo trucco non è un'opzione del comando cp, ma funziona a livello bash. Ciò significa che può essere utilizzato con qualsiasi comando. Non solo con cp. Puoi fare il test scrivendo:

    File echo: isos /! (archlinux.iso | fedora.iso | chakra.iso)

    Altrimenti è un trucco molto utile. Insieme all'opzione -u di cp, che trovo utile di tanto in tanto.

    1.    Daniele Rojas suddetto

      Certo, è un'espressione regolare

      1.    hexborg suddetto

        In realtà è uno schema esteso. Un'espressione regolare è qualcos'altro, ma sembra. 🙂

    2.    KZKG ^ Gaara suddetto

      Sì, la -u in cp è davvero interessante. Ammetto di essere un grande fan di rsync ... ma non lo so, ho un attaccamento al povero cp hahaha.

      Riguardo all'attivazione di shopt, non lo sapevo, pensavo che funzionasse automaticamente, grazie per il suggerimento.

      E sì, sospettavo che avesse più a che fare con Bash che con cp, ma non avevo ancora provato a fare un rm o un gatto o qualcosa del genere :)

      Grazie per il commento, davvero 😀

      1.    hexborg suddetto

        È un piacere fare la mia parte. 🙂

        1.    KZKG ^ Gaara suddetto

          In effetti, sono sempre stato interessato a conoscere le espressioni regolari ... ti ecciti e fai un post per principianti al riguardo? 😀

          1.    hexborg suddetto

            LOL !! Mi hai già. 🙂 Con quanto ero felice senza commenti ... 🙂

            Ebbene, la verità è che mi sta chiamando. 🙂 Ma devo ancora pensarci un po '. Sembra difficile da spiegare.

            1.    KZKG ^ Gaara suddetto

              hahahahaha niente, non preoccuparti, continui a commentare che impari ancora ahahahaha, l'importante è condividere 😀


  4.   tufadorina suddetto

    Suggerimento molto buono Non andrai mai a letto senza imparare qualcosa di nuovo.

    1.    KZKG ^ Gaara suddetto

      Esatto, e la cosa migliore è che imparo molto dai commenti che lasci sui post, adoro imparare cose strane ogni giorno HAHAHA.

  5.   Giskard suddetto

    Buon trucco. Non lo conoscevo 🙂

    1.    KZKG ^ Gaara suddetto

      Un piacere 😉

  6.   @Jlcmux suddetto

    Ma quando metti isos intendi mettere debian.iso ubuntu.iso /! (Etc etc)? no

  7.   Heber suddetto

    In effetti si è rivelato un suggerimento molto interessante. Non solo per l'articolo in sé, ma anche per il valore aggiunto dei commenti.
    Bella comunità di <º Linux

  8.   MARTA DEL POZZO suddetto

    Il tuo aiuto non mi è stato di alcuna utilità, dovresti fare un esempio, così che gli studenti possano capire meglio la tua magnifica tecnica.
    Grazie per aver dedicato del tempo, ricorderò sempre questa pagina nel mio cuore

  9.   felipe016 suddetto

    dici che salti le directory, tuttavia negli esempi salti solo i file, sai come saltare una directory particolare? Saluti.