Τρόπος αντιγραφής και εξαίρεσης cp εσωτερικών αρχείων ή καταλόγων (ισοδύναμο με rsync –exclude)

Αν σας ζητούσα να αναφέρετε μια εντολή για να αντιγράψετε ένα φάκελο σε άλλη τοποθεσία, σχεδόν όλοι θα το αναφέρουν cp.

Τώρα, αν σας πω ότι, επιπλέον, πρέπει να αντιγράψετε όλα τα περιεχόμενα αυτού του φακέλου εκτός από 1 αρχείο, πολλοί θα σκέφτονταν και άλλοι θα αναφέρουν rsync, στη συνέχεια με την παράμετρο -Αποκλείω μπορείτε να εξαιρέσετε το αρχείο X ή το φάκελο και να μην το αντιγράψετε. Αλλά ... ξέρατε ότι το cp σας επιτρέπει επίσης να το κάνετε αυτό; ... O_O … Ναι φίλοι, cp έχει τη δική του "εξαίρεση" hehe.

Για παράδειγμα, έχουμε τον φάκελο isos που περιέχει: ubuntu.iso, debian.iso y archlinux.iso :

Και συμβαίνει ότι θέλουμε να αντιγράψουμε στον άλλο φάκελο (διανομή-deb, το οποίο είναι κενό) το αρχείο debian.iso y ubuntu.iso, δηλαδή, εκτός από το archlinux.iso

Για αυτό θα μπορούσαμε να αντιγράψουμε ένα αρχείο και μετά ένα άλλο, χειροκίνητα, αλλά είναι πολύ πιο έξυπνο να χρησιμοποιήσουμε τις επιλογές που μας προσφέρει το σύστημα, σωστά; … 😀… για παράδειγμα, για να το κάνετε αυτό:

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

Και αυτό αρκεί για να αντιγράψετε ΟΛΑ τα περιεχόμενα στον κατάλογο isos στο distros-deb, όλα εκτός από το archlinux.iso 😉

Ας υποθέσουμε ότι δεν έχουμε μόνο αυτά τα 3 αρχεία, αλλά έχουμε επίσης τα feedora.iso και chakra.iso ... και θέλουμε να κάνουμε το ίδιο, θα εξαιρέθηκε επίσης από τα αντίγραφα fedora.iso και chakra.iso, ας δούμε πώς να το κάνουμε:

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

Όπως μπορείτε να δείτε, πολλά αρχεία ή φάκελοι μπορούν να αποκλειστούν, τα χωρίζουμε μόνο με σωλήνα (|) και το θέμα επιλύθηκε 😀

Με αυτό δεν εννοώ ότι το cp είναι καλύτερο για τα πάντα από το rsync ... αλλά, και τα δύο είναι εξαιρετικά εργαλεία, για παράδειγμα ... ξέρατε την παράμετρο -u de cp; ... hehe, σίγουρα όχι 😉

Λοιπόν, τίποτα άλλο να προσθέσω ... είναι μια ενδιαφέρουσα συμβουλή; 😀

αφορά


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.

  1.   Αστειεύομαι dijo

    Δεν ήξερα αυτήν τη μέθοδο, μαθαίνεις πάντα κάτι νέο.
    Εξαιρετική συμβουλή, ευχαριστώ.

    1.    KZKG ^ Γκάρα dijo

      Σας ευχαριστώ

  2.   κρότο dijo

    Η συμβουλή είναι πολύ καλή, δεν το ήξερα! Απομένει μόνο να εξηγήσουμε στους χρήστες του Arch και του Fedora γιατί εξαιρέσατε το iso's hehe

    1.    KZKG ^ Γκάρα dijo

      JAJAJAJAJAJA Δεν έβαλα τα ISO Arch και Fedora επειδή το παράδειγμα προσπάθησε να αντιγράψει μόνο τις διανομές Deb… HAHAHAHAHA.

  3.   hexborg dijo

    Εδώ πρέπει να κάνουμε μερικά σημεία. Το ένα είναι ότι αυτό λειτουργεί μόνο εάν είναι ενεργοποιημένη η επιλογή extglob του bash. Εάν δεν είναι, ενεργοποιείται με αυτήν την εντολή:

    shopt -s extglob

    Μπορεί να τοποθετηθεί στο .bashrc για να το ενεργοποιήσετε πάντα.

    Το άλλο σημείο είναι ότι αυτό το τέχνασμα δεν είναι επιλογή της εντολής cp, αλλά λειτουργεί σε επίπεδο bash. Αυτό σημαίνει ότι μπορεί να χρησιμοποιηθεί με οποιαδήποτε εντολή. Όχι μόνο με cp. Μπορείτε να κάνετε το τεστ γράφοντας:

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

    Διαφορετικά είναι ένα πολύ χρήσιμο κόλπο. Μαζί με την επιλογή -u στο cp, το οποίο βρίσκω επίσης χρήσιμο από καιρό σε καιρό.

    1.    Ντάνιελ Ρότζας dijo

      Σίγουρα, είναι μια κανονική έκφραση

      1.    hexborg dijo

        Είναι στην πραγματικότητα ένα εκτεταμένο σχέδιο. Μια κανονική έκφραση είναι κάτι άλλο, αλλά μοιάζει με αυτό. 🙂

    2.    KZKG ^ Γκάρα dijo

      Ναι, το -u in cp είναι πραγματικά ενδιαφέρον. Παραδέχομαι ότι είμαι οπαδός του rsync ... αλλά δεν ξέρω, έχω μια προσκόλληση στον φτωχό cp, χαχα.

      Σχετικά με την ενεργοποίηση του shopt, δεν ήξερα, υποθέτω ότι αυτό λειτούργησε αυτόματα, ευχαριστώ για την συμβουλή.

      Και ναι, υποψιάστηκα ότι είχε μεγαλύτερη σχέση με τον Bash από το cp, αλλά δεν είχα δοκιμάσει να φτιάξω ένα rm ή μια γάτα ή κάτι τέτοιο ακόμα :)

      Ευχαριστώ για το σχόλιο, πραγματικά κάνω 😀

      1.    hexborg dijo

        Είναι χαρά μου να κάνω το κομμάτι μου. 🙂

        1.    KZKG ^ Γκάρα dijo

          Στην πραγματικότητα, πάντα με ενδιέφερε να μάθω για το regex ... ενθουσιάζετε και κάνετε μια νέα ανάρτηση για αυτό; 😀

          1.    hexborg dijo

            ΧΑΧΑΧΑ!! Έχεις ήδη. 🙂 Με πόσο χαρούμενος ήμουν χωρίς να σχολιάσω… 🙂

            Λοιπόν, η αλήθεια είναι ότι με καλεί. 🙂 Αλλά πρέπει να το σκεφτώ για λίγο. Φαίνεται δύσκολο να εξηγηθεί.

            1.    KZKG ^ Γκάρα dijo

              hahahahaha τίποτα, μην ανησυχείτε, συνεχίζετε να σχολιάζετε ότι εξακολουθείτε να μαθαίνετε ahahahaha, το σημαντικό είναι να μοιραστείτε


  4.   τουφουδαρίνη dijo

    Πολύ καλή συμβουλή Δεν θα πάτε ποτέ στο κρεβάτι χωρίς να μάθετε κάτι νέο.

    1.    KZKG ^ Γκάρα dijo

      Ακριβώς, και το καλύτερο από όλα είναι ότι μαθαίνω πολλά με τα σχόλια που αφήνετε στις δημοσιεύσεις, μου αρέσει να μαθαίνω περίεργα πράγματα κάθε μέρα HAHAHA.

  5.   Γκίσκαρντ dijo

    Καλό κόλπο. Δεν τον ήξερα 🙂

    1.    KZKG ^ Γκάρα dijo

      Μια ευχαρίστηση 😉

  6.   @Jlcmux dijo

    Αλλά όταν βάζεις isos εννοείς να βάλεις το debian.iso ubuntu.iso /! (Κ.λπ.); όχι

  7.   Heber dijo

    Πράγματι, αποδείχθηκε μια πολύ ενδιαφέρουσα συμβουλή. Όχι μόνο λόγω του ίδιου του άρθρου, αλλά και λόγω της προστιθέμενης αξίας των σχολίων.
    Όμορφη κοινότητα <º Linux

  8.   ΜΑΡΤΑ ΝΤΕΛ ΠΟΖΟ dijo

    Η βοήθειά σας δεν μου είχε χρησιμεύσει, πρέπει να δώσετε ένα παράδειγμα, έτσι ώστε οι μαθητές να καταλάβουν καλύτερα την υπέροχη τεχνική σας
    Σας ευχαριστώ που αφιερώσατε χρόνο, θα θυμάμαι πάντα αυτή τη σελίδα στην καρδιά μου

  9.   felipe016 dijo

    λέτε ότι παραλείπετε καταλόγους, ωστόσο στα παραδείγματα παραλείπετε μόνο αρχεία, ξέρετε πώς να παραλείψετε έναν συγκεκριμένο κατάλογο; Χαιρετισμοί.