28Jun

Kuidas kopeerida faili Linuxi ühe käskuga mitu kataloogi

Faili kopeerimine Linuxi käsureaga on lihtne. Kuid mis siis, kui soovite kopeerida sama faili mitmesse erinevasse asukohta? See on ka lihtne ja me näitame teile, kuidas seda ühe käsuga teha.

Tavaliselt kopeerib üks fail cp käsku, linkides lähtefaili ja sihtkataloogi:

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

Selleks, et kopeerida see kahteesse kataloogidesse, paljudele inimestele lihtsalt käsku kaksrohkem kordi erinevate sihtkohtadega:

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

Kuid me saame teha sama ülesande ühe käsuga:

echo dir1 dir2 dir3 |xargs -n 1 cp file1

Selle käsk töötab. Echo-käsk kirjutab tavaliselt ekraanile. Sellisel juhul tahame aga echo käsu väljundit toita XML-i käskluse sisendina. Selleks kasutame toru sümbolit( |), mis voogestab väljundit ühest käskust teise sisendina. Käsk xargs käivitab cp-käsku kolm korda, iga kord lisades sellele järgneva kataloogijuhendi käsku echo käsk cp käsu lõppu. Xargsile on edastatud kolm argumenti, kuid xargsi käsu -n 1-valis annab sellele käsu lisada ainult ühte neist argumentidest iga kord, kui see käivitatakse.

Niisiis, meie näites varem kinnitatud, saab ülaltoodud kolme erineva cp käsku kombineerida üheks selliseks käsuks:

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

Pange tähele, et kui kopeeritud fail on olemas mis tahes määratud sihtkataloogis, asendatakse see sihtriigi fail automaatselt. Teilt ei küsita, kas soovite faili asendada.(Tavaliselt, kui kasutate cp käsku faili kopeerimiseks ühte asukohta, võite lisada -i-võimaluse, et küsida, kas soovite olemasoleva faili asendada. Kuid -i-valik on interaktiivne valik( see põhjustabcp käsk küsida kasutajalt sisendit) ja te ei saa interaktiivse võtmega kasutada cp-käsku, kui kasutate seda koos xargiga.)

Veel üks asi, mida kaaluda on see, et kui kopeerite väga suurt faili, võitesoovid lisada ülalolevas ühekordses käsus cp-käsuga no-clobber( -n) võimaluse. See valik automaatselt takistab faili sihtkoha ülekirjutamist, kui see on seal juba olemas. Kui kopeerite väga suurt faili võrgu kaudu, võib see olla aeglane ja võite soovida vältida failide kopeerimiseks ja asendamiseks vajalikke ressursse. Järgmine käsu lisab -n-võimaluse ja ei kopeerita faili kajasignaali argumentidele loetletud sihtkohta, kui fail on selles sihtmärgis juba olemas.

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

Tüübi man echo, man xargs või man cp käsurealt Linuxis, et saada rohkem teavet nende käskude kohta.