Kaip kopijuoti failą į kelis katalogus su viena komanda su Linux
Lengva kopijuoti failą su „Linux“ komandine eilute. Tačiau ką daryti, jei norite kopijuoti tą patį failą į kelias skirtingas vietas? Taip pat lengva, ir mes parodysime, kaip tai padaryti su viena komanda.
Paprastai, jei norite kopijuoti vieną failą, naudokite cp
komandą, susietą su šaltinio failu ir paskirties katalogu:
cp ~ / Dokumentai / FileToBeCopied.txt ~ / TextFiles /
Jei norite nukopijuoti jį į dar du katalogus, daugelis žmonių tiesiog paleisdavo komandą dar du kartus, su skirtingomis paskirties vietomis:
cp ~ / Dokumentai / FileToBeCopied.txt ~ / Dropbox /
cp ~ / Dokumentai / FileToBeCopied.txt / media / lori / MYUSBDRIVE /
Tačiau tą pačią užduotį galime atlikti vienu komandu:
echo dir1 dir2 dir3 | xargs -n 1 cp failas1
Štai kaip veikia ši komanda. The aidas
komanda paprastai rašo ekrane. Tačiau šiuo atveju norime maitinti aidas
komandą kaip įvestį į xargs
komandą. Tam mes naudojame vamzdžio simbolį ( |
), kuri išvesties iš vienos komandos įeina į įvestį į kitą. The xargs
komanda paleis cp
komandą tris kartus, kiekvieną kartą pridedant kitą katalogo kelią, nukreiptą į jį iš aidas
komandą į cp
komandą. Pateikiami trys argumentai xargs
, bet -n 1
parinktis xargs
komanda nurodo pridėti tik vieną iš šių argumentų cp
komandą kiekvieną kartą, kai jis veikia.
Taigi, norėdami laikytis mūsų pavyzdžio anksčiau, trys atskiri cp
aukščiau nurodytas komandas galima sujungti į vieną komandą:
echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp ~ / Documents / FileToBeCopied.txt
Atkreipkite dėmesį, kad jei kopijuojamas failas yra bet kurioje nurodytoje adresų knygoje, toje vietoje esantis failas bus pakeistas automatiškai. Jums nebus paklausta, ar norite pakeisti failą. (Paprastai, kai naudojate cp
komandą kopijuoti failą į vieną vietą, galite pridėti -i
galimybė paklausti, ar norite pakeisti esamą failą. Tačiau -i
parinktis yra interaktyvi parinktis (ji sukelia cp
komandą prašyti įvesti naudotoją) ir negalite naudoti interaktyvios parinkties su cp
komandą, kai ją naudojate kartu su xargs
.)
Kitas dalykas, kurį reikia apsvarstyti, yra tai, kad jei kopijuojate labai didelį failą, galbūt norėsite pridėti ne-clobber ( -n
) galimybė cp
komandą į viršų. Ši parinktis automatiškai neleidžia perrašyti failo paskirties vietoje, jei ji jau yra. Jei kopijuojate labai didelį failą tinkle, jis gali būti lėtas ir galbūt nenorite naudoti išteklių, reikalingų failui kopijuoti ir pakeisti. Toliau pateikta komanda prideda -n
parinktis, o ne kopijuoti failą į bet kurią paskirties vietą, nurodytą argumentuose, į aido pareiškimą, jei failas jau yra toje paskirties vietoje.
echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp -n ~ / Documents / FileToBeCopied.txt
Jei norite gauti daugiau informacijos apie bet kurią iš šių komandų, Linux komandinėje eilutėje įrašykite man echo, man xargs arba man cp..