Pagrindinis » kaip » Kaip kopijuoti failą į kelis katalogus su viena komanda su Linux

    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..