If-Koubou

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 (Cum să)

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? Este ș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, utilizați cp comanda, care face legătura cu fișierul sursă și cu directorul de destinație:

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

Pentru a o copia în alte două directoare, mulți oameni ar rula comanda 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 fișier cp1

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 conductei ( | ) care alimentează ieșirea de la o comandă ca intrare în alta. xargs comanda va rula cp comanda de trei ori, de fiecare dată când se anexează 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 doar unul dintre aceste argumente la un moment dat cp comanda de fiecare dată când rulează.

Deci, să rămânem cu exemplul nostru din 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 -i opțiunea de a întreba dacă doriți să înlocuiți un fișier existent. Însă -i 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, puteți să adăugați și no-clobber ( -N ) la opțiunea cp comandă în comanda unică de mai sus. Această opțiune împiedică în mod automat ca 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, este posibil să fie 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 în 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

Tastați echo om, om xargs sau om cp pe linia de comandă din Linux pentru mai multe informații despre oricare dintre aceste comenzi.