Kaip kopijuoti failą į keletą katalogų su viena komanda Linux

Kaip kopijuoti failą į keletą katalogų su viena komanda Linux
Kaip kopijuoti failą į keletą katalogų su viena komanda Linux
Anonim
Failo kopijavimas su Linux komandine eilute yra lengva. Tačiau ką daryti, jei norite kopijuoti tą patį failą į kelias skirtingas vietas? Tai taip pat lengva, ir mes parodysime, kaip tai padaryti, naudodami vieną komandą.
Failo kopijavimas su Linux komandine eilute yra lengva. Tačiau ką daryti, jei norite kopijuoti tą patį failą į kelias skirtingas vietas? Tai taip pat lengva, ir mes parodysime, kaip tai padaryti, naudodami vieną komandą.

Paprastai kopijuoti vieną failą naudosite

cp

komandą, nuorodą į šaltinio failą ir paskirties katalogą:

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

Norėdami nukopijuoti jį į dar du katalogus, daugelis žmonių tiesiog paleisti komandą dar du kartus skirtingomis paskirtimis:

cp ~/Documents/FileToBeCopied.txt ~/Dropbox/

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

Tačiau mes galime atlikti tą pačią užduotį vienu komanda:
Tačiau mes galime atlikti tą pačią užduotį vienu komanda:

echo dir1 dir2 dir3 | xargs -n 1 cp file1

Štai kaip veikia ši komanda. The

echo

komanda paprastai rašo ekraną. Tačiau šiuo atveju mes norime tiekti produkcijos

echo

komanda kaip įnašas į

xargs

komanda Norėdami tai padaryti, mes naudojame vamzdžio simbolį (

|

), kuris perduoda iš vienos komandos kaip įvesties į kitą. The

xargs

komanda paleis

cp

komandą tris kartus, kiekvieną kartą pridedant kitą katalogo kelią, prie jo pritvirtintą iš

echo

komandą iki pabaigos

cp

komanda Pateikiami trys argumentai

xargs

bet

-n 1

parinktis

xargs

komanda nurodo tai, kad vienu metu tik pridėti vieną iš šių argumentų

cp

komanda kiekvieną kartą paleisti.

Taigi, laikydamiesi mūsų pavyzdžio iš ankstesnių, trys atskiros

cp

Aukščiau pateiktos komandos gali būti sujungtos į vieną komandą:

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

Atkreipkite dėmesį, kad jei kopijuojamas failas egzistuoja bet kuriame nurodytame paskirties kataloge, failas toje paskirtyje bus pakeistas automatiškai. Jums nereikės paklausti, ar norite pakeisti failą. (Paprastai, kai naudojate
Atkreipkite dėmesį, kad jei kopijuojamas failas egzistuoja bet kuriame nurodytame paskirties kataloge, failas toje paskirtyje bus pakeistas automatiškai. Jums nereikės paklausti, ar norite pakeisti failą. (Paprastai, kai naudojate

cp

komandą kopijuoti failą į vieną vietą, galite pridėti

-i

Galite paklausti, ar norite pakeisti esamą failą. Tačiau,

-i

parinktis yra interaktyvi parinktis (ji sukelia

cp

komandą prašyti vartotojo įvesties) ir jūs negalite naudoti interaktyvaus varianto su

cp

komandą, kai naudojamas kartu su

xargs

.)

Dar vienas dalykas, kurį reikia apsvarstyti, yra tai, kad jei kopijuosite labai didelį failą, galbūt norėsite pridėti "no-clobber" (

-n

) galimybė

cp

komanda per vieną komandą aukščiau. Ši parinktis automatiškai neleidžia įrašyti failo į paskirties vietą, jei jis ten jau yra. Jei kopijuosite labai didelį failą tinkle, jis gali būti lėtas ir galbūt norėsite nenaudoti išteklių, reikalingų failui kopijuoti ir pakeisti. Ši komanda prideda

-n

parinktį ir nebus nukopijuoti failo į bet kokį el. charakteristikos sąraše esantį tikslą, jei failas jau yra toje paskirties vietoje.

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

Rekomenduojamas: