If-Koubou

Kako kopirati datoteku u više direktorija s jednim naredbom u Linuxu

Kako kopirati datoteku u više direktorija s jednim naredbom u Linuxu (Kako da)

Kopiranje datoteke s Linux komandnom linijom je jednostavno. Međutim, što ako želite kopirati istu datoteku na nekoliko različitih lokacija? To je lako i pokazat ćemo vam kako to učiniti jednim naredbom.

Uobičajeno, za kopiranje jedne datoteke koristit ćete cp naredba, povezivanje s izvornom datotekom i odredišnim direktorijem:

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

Da biste je kopirali u još dva direktorija, mnogi ljudi bi samo pokrenuli naredbu još dva puta, s različitim odredištima:

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

Međutim, možemo napraviti isti zadatak s jednim naredbom:

echo dir1 dir2 dir3 | xargs -n 1 cp datoteku1

Evo kako ova naredba funkcionira. jeka naredba normalno piše na zaslonu. Međutim, u ovom slučaju želimo hraniti izlazne datoteke jeka naredba kao unos u xargs naredba. Da biste to učinili, koristimo simbol cijevi ( | ) koji hrani izlaz iz jedne naredbe kao ulaza u drugi. xargs naredba će pokrenuti cp naredbu tri puta, pri svakom dodavanju sljedeće putanje direktorija koji je na njega povezan jeka zapovijed do kraja cp naredba. Postoje tri argumenta xargs , ali -n1 opcija na xargs naredba kaže da samo jedan od tih argumenata istodobno doda cp naredbu svaki put kad se pokrene.

Dakle, da se pridržavamo našeg primjera iz ranijih, ta tri odvojena cp gore navedene naredbe mogu se kombinirati u jednu naredbu poput ove:

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

Imajte na umu da ako datoteka kopirana postoji u bilo kojem od navedenih odredišnih direktorija, datoteka u tom odredištu automatski će se zamijeniti. Nećete se pitati želite li zamijeniti datoteku. (Normalno, kada koristite cp naredbu za kopiranje datoteke na jednu lokaciju, možete dodati -i da biste pitali želite li zamijeniti postojeću datoteku. Međutim -i opcija je interaktivna opcija (to uzrokuje cp naredba tražiti ulaz od korisnika) i ne možete koristiti interaktivnu opciju s cp naredba kada ga koristite u sprezi s xargs .)

Još jedna stvar koju treba razmotriti jest da, ako kopirate vrlo veliku datoteku, možda želite dodati ne-clobber ( -n ) opciju za cp naredba u jednoj naredbi iznad. Ova opcija automatski sprječava prebrisanje datoteke u odredištu ako već postoji. Ako kopirate vrlo veliku datoteku putem mreže, možda je spor i možda biste željeli izbjegavati upotrebu resursa potrebnih za kopiranje i zamjenu datoteke. Sljedeća naredba dodaje -n i neće kopirati datoteku na bilo koje odredište navedeno u argumentima iz izjave ehe, ako datoteka već postoji u tom odredištu.

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

Upišite čovjeka echo, man xargs ili čovjeka cp na naredbenom retku u Linuxu za više informacija o bilo kojoj od tih naredbi.