Πώς να αντιγράψετε ένα αρχείο σε πολλούς καταλόγους με μία εντολή στο 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 αρχείο cp1
Δείτε πώς λειτουργεί αυτή η εντολή. ο ηχώ
η εντολή κανονικά γράφει στην οθόνη. Ωστόσο, σε αυτή την περίπτωση, θέλουμε να τροφοδοτήσουμε την έξοδο του ηχώ
εντολή ως είσοδο στο xargs
εντολή. Για να γίνει αυτό, χρησιμοποιούμε το σύμβολο σωλήνα ( |
) που τροφοδοτεί την έξοδο από μια εντολή ως είσοδο σε μια άλλη. ο xargs
εντολή θα εκτελέσει το cp
εντολή τρεις φορές, κάθε φορά που συνδέει την επόμενη διαδρομή καταλόγου που είναι συνδεδεμένη με αυτήν από το ηχώ
εντολή μέχρι το τέλος του cp
εντολή. Έχουν περάσει τρία επιχειρήματα xargs
, αλλά το -n 1
επιλογή στο xargs
η εντολή του λέει να προσθέσει μόνο ένα από αυτά τα επιχειρήματα κάθε φορά στο cp
εντολή κάθε φορά που τρέχει.
Έτσι, για να κολλήσουμε με το παράδειγμά μας από νωρίτερα, τα τρία ξεχωριστά cp
οι εντολές παραπάνω μπορούν να συνδυαστούν σε μία εντολή όπως αυτή:
echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE xargs -n 1 cp ~ / Documents / FileToBeCopied.txt
Σημειώστε ότι εάν το αρχείο που αντιγράφεται υπάρχει σε οποιονδήποτε από τους καθορισμένους καταλόγους προορισμού, το αρχείο στον προορισμό αυτό θα αντικατασταθεί αυτόματα. Δεν θα ερωτηθείτε εάν θέλετε να αντικαταστήσετε το αρχείο. (Κανονικά, όταν χρησιμοποιείτε το cp
εντολή για την αντιγραφή ενός αρχείου σε μια μόνο θέση, μπορείτε να προσθέσετε το -Εγώ
επιλογή για να ρωτήσετε αν θέλετε να αντικαταστήσετε ένα υπάρχον αρχείο. Ωστόσο, το -Εγώ
επιλογή είναι μια διαδραστική επιλογή (προκαλεί το 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 για περισσότερες πληροφορίες σχετικά με οποιαδήποτε από αυτές τις εντολές.