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.