Pagina principala » HOWTO » Cum să copiați un fișier în mai multe directoare cu o singură comandă în Linux

    Cum să copiați un fișier în mai multe directoare cu o singură comandă în Linux

    Copierea unui fișier cu linia de comandă Linux este ușoară. Cu toate acestea, dacă doriți să copiați același fișier în mai multe locații diferite? E și ușor, și vă vom arăta cum să faceți asta cu o singură comandă.

    În mod normal, pentru a copia un fișier, ați folosi cp comanda, care se leagă de fișierul sursă și de directorul de destinație:

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

    Pentru a o copia în alte două directoare, mulți oameni ar rula comanda încă de două ori, cu destinații diferite:

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

    Cu toate acestea, putem face aceeași sarcină cu o singură comandă:

    echo dir1 dir2 dir3 | xargs -n 1 cp file1

    Iată cum funcționează această comandă. ecou comandă în mod normal scrie pe ecran. Cu toate acestea, în acest caz, dorim să alimentăm ieșirea din ecou comandă ca intrare în xargs comanda. Pentru aceasta, folosim simbolul pipe ( | ) care alimentează ieșirea dintr-o comandă ca intrare în alta. xargs comanda va rula cp comanda de trei ori, de fiecare dată când se adaugă calea directorului următor la care este conectat ecou comandă până la sfârșitul cp comanda. Sunt trecute trei argumente xargs , cu exceptia -n 1 opțiune pe xargs comanda îi spune să adauge câte unul din aceste argumente la un moment dat cp comanda de fiecare dată când este rulat.

    Deci, să rămânem cu exemplul nostru de mai devreme, cei trei separați cp comenzile de mai sus pot fi combinate intr-o singura comanda ca aceasta:

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

    Rețineți că dacă fișierul copiat există în oricare dintre directoarele de destinație specificate, fișierul din acea destinație va fi înlocuit automat. Nu veți fi întrebat dacă doriți să înlocuiți fișierul. (În mod normal, atunci când utilizați cp comanda pentru a copia un fișier într-o singură locație, puteți adăuga -eu opțiunea de a întreba dacă doriți să înlocuiți un fișier existent. Însă -eu opțiunea este o opțiune interactivă (cauzează cp comanda pentru a cere informații de la utilizator) și nu puteți utiliza o opțiune interactivă cu cp comanda atunci când se utilizează împreună cu xargs .)

    Un alt lucru de luat în considerare este că, dacă copiați un fișier foarte mare, este posibil să doriți să adăugați un nu-clobber ( -n ) la opțiunea cp comandă în comanda unică de mai sus. Această opțiune împiedică automat un fișier să fie suprascris într-o destinație dacă există deja acolo. Dacă copiați un fișier foarte mare într-o rețea, poate fi lent și poate doriți să evitați utilizarea resurselor necesare pentru copierea și înlocuirea fișierului. Următoarea comandă adaugă -n și nu va copia fișierul la orice destinație listată în argumente la instrucțiunea ecou, ​​dacă fișierul există deja în acea destinație.

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

    Tipul ecou om, om xargs sau om cp pe linia de comandă în Linux pentru mai multe informații despre oricare dintre aceste comenzi.