28Jun

Πώς να αντιγράψετε ένα αρχείο σε πολλούς καταλόγους με μία εντολή στο Linux

Η αντιγραφή ενός αρχείου με τη γραμμή εντολών του Linux είναι εύκολη.Ωστόσο, τι γίνεται αν θέλετε να αντιγράψετε το ίδιο αρχείο σε διάφορες διαφορετικές τοποθεσίες;Αυτό είναι επίσης εύκολο, και θα σας δείξουμε πώς να το κάνετε αυτό με μία εντολή.

Κανονικά, για να αντιγράψετε ένα αρχείο, θα χρησιμοποιήσετε την εντολή cp, συνδέοντας το αρχείο προέλευσης και τον κατάλογο προορισμού:

cp ~ /Documents/ FileToBeCopied.txt ~ /TextFiles/

Για να το αντιγράψετε σε δύο άλλους καταλόγους,περισσότερες φορές, με διαφορετικούς προορισμούς:

cp ~ /Documents/ FileToBeCopied.txt ~ /Dropbox/ cp ~ /Documents/ FileToBeCopied.txt /media/lori/MYUSBDRIVE/

Ωστόσο, μπορούμε να κάνουμε την ίδια εργασία με μία εντολή:

echo dir1 dir2 dir3 |xargs -n 1 cp file1

Δείτε πώς λειτουργεί αυτή η εντολή.Η εντολή ηχούς κανονικά γράφει στην οθόνη.Ωστόσο, σε αυτήν την περίπτωση, θέλουμε να τροφοδοτήσουμε την έξοδο της εντολής echo ως είσοδο στην εντολή xargs.Για να γίνει αυτό, χρησιμοποιούμε το σύμβολο σωλήνα( |) που τροφοδοτεί την έξοδο από μια εντολή ως είσοδο σε μια άλλη.Η εντολή xargs θα εκτελέσει την εντολή cp τρεις φορές, κάθε φορά που θα συνδέσει την επόμενη διαδρομή καταλόγου με την εντολή echo στο τέλος της εντολής cp.Υπάρχουν τρία επιχειρήματα που μεταβιβάζονται σε xargs, αλλά η επιλογή -n 1 στην εντολή xargs το λέει να προσθέσει μόνο ένα από αυτά τα επιχειρήματα τη φορά στην εντολή cp κάθε φορά που τρέχει.

Έτσι, για να κολλήσουμε με το παράδειγμά μας από νωρίτερα, οι τρεις ξεχωριστές εντολές cp παραπάνω μπορούν να συνδυαστούν σε μία εντολή όπως αυτή:

echo ~ /TextFiles/ ~ / Dropbox /media/lori/ MYUSBDRIVE |xargs -n 1 cp ~ /Documents/ FileToBeCopied.txt

Σημειώστε ότι αν το αρχείο που αντιγράφεται υπάρχει σε οποιονδήποτε από τους καθορισμένους καταλόγους προορισμού, το αρχείο στον προορισμό αυτό θα αντικατασταθεί αυτόματα.Δεν θα ερωτηθείτε εάν θέλετε να αντικαταστήσετε το αρχείο.(Συνήθως, όταν χρησιμοποιείτε την εντολή cp για να αντιγράψετε ένα αρχείο σε μία θέση, μπορείτε να προσθέσετε την επιλογή -i για να ρωτήσετε αν θέλετε να αντικαταστήσετε ένα υπάρχον αρχείο. Ωστόσο, η επιλογή -i είναι μια διαδραστική επιλογήcp εντολή για να ζητήσετε εισροή από το χρήστη) και δεν μπορείτε να χρησιμοποιήσετε μια διαδραστική επιλογή με την εντολή cp όταν τη χρησιμοποιείτε σε συνδυασμό με xargs.)

Ένα άλλο πράγμα που πρέπει να λάβετε υπόψη είναι ότι αν αντιγράφετε ένα πολύ μεγάλο αρχείο, ίσωςθέλετε να προσθέσετε την επιλογή no-clobber( -n) στην εντολή cp στην παραπάνω εντολή παραπάνω.Αυτή η επιλογή προλαμβάνει αυτόματα την αναίρεση ενός αρχείου σε έναν προορισμό, εάν υπάρχει ήδη εκεί.Εάν αντιγράφετε ένα πολύ μεγάλο αρχείο σε ένα δίκτυο, μπορεί να είναι αργό και ίσως να θέλετε να αποφύγετε τη χρήση των πόρων που απαιτούνται για την αντιγραφή και την αντικατάσταση του αρχείου.Η ακόλουθη εντολή προσθέτει την επιλογή -n και δεν θα αντιγράψει το αρχείο σε οποιονδήποτε προορισμό εμφανίζεται στα επιχειρήματα στην εντολή echo, εάν το αρχείο υπάρχει ήδη στον προορισμό.

echo ~ /TextFiles/ ~ / Dropbox /media/lori/ MYUSBDRIVE |xargs -n 1 cp -n ~ /Documents/ FileToBeCopied.txt

Πληκτρολογήστε om echo, man xargs ή man cp στη γραμμή εντολών στο Linux για περισσότερες πληροφορίες σχετικά με οποιαδήποτε από αυτές τις εντολές.