If-Koubou

Kā kopēt failu vairākām direktorijām ar vienu komandu Linux

Kā kopēt failu vairākām direktorijām ar vienu komandu Linux (Kā)

Faila kopēšana ar Linux komandrindu ir vienkārša. Tomēr, ko vēlaties, ja vēlaties kopēt to pašu failu vairākās citās vietās? Tas ir arī viegli, un mēs parādīsim, kā to izdarīt, izmantojot vienu komandu.

Parasti, lai kopētu vienu failu, jūs izmantojat cp komanda, kas saistīta ar avota failu un mērķa direktoriju:

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

Lai to kopētu vēl divām direktorijām, daudzi cilvēki vienkārši palaistu komandu vēl divas reizes ar dažādiem galamērķiem:

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

Tomēr mēs varam darīt to pašu uzdevumu ar vienu komandu:

echo dir1 dir2 dir3 | xargs -n 1 cp file1

Lūk, kā šī komanda darbojas. The echo komanda parasti raksta uz ekrāna. Tomēr šajā gadījumā mēs vēlamies barot produkciju echo komanda kā ieguldījums xargs komandu Lai to izdarītu, mēs izmantojam caurules simbolu ( | ), kas baro produkciju no vienas komandas kā ievadi citai. The xargs komanda palaist cp komandu trīs reizes, katru reizi pievienojot nākamo direktorijas ceļu, kas tai pievienots no echo komandu uz beigām cp komandu Ir nosūtīti trīs argumenti xargs , bet -n 1 iespēja uz xargs komanda komandu liek tai pievienot tikai vienu no šiem argumentiem laikā cp komandu katru reizi, kad tas palaists.

Tātad, pielīmējiet mūsu piemēru no agrāk, trīs atsevišķi cp Iepriekš minētās komandas var apvienot vienā komandā šādi:

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

Ievērojiet, ka, ja kopēts fails pastāv kādā no norādītajiem galamērķa direktorijiem, šajā galamērķa failā tiks automātiski aizstāts. Jums netiks lūgts, vai vēlaties aizstāt failu. (Parasti, kad jūs izmantojat cp komandu kopēt failu vienā atrašanās vietā, jūs varat pievienot -i Iespēja uzdot jautājumu, vai vēlaties aizstāt esošu failu. Tomēr, -i iespēja ir interaktīva iespēja (tas izraisa cp komanda pieprasīt ievadi no lietotāja), un jūs nevarat izmantot interaktīvu iespēju ar cp komandu, ja to lieto kopā ar xargs .)

Vēl viena lieta, kas jāizskata, ir tāda, ka, ja kopējat ļoti lielu failu, iespējams, vēlēsities pievienot bez-clobber ( -n ) iespēja uz cp komanda vienā komandā iepriekš. Šī iespēja automātiski novērš faila pārrakstīšanu galamērķī, ja tas tur jau pastāv. Ja kopējat ļoti lielu failu tīklā, tas var būt lēns, un jūs, iespējams, vēlēsities izvairīties no failiem, kas nepieciešami, lai failu kopētu un aizstātu. Šī komanda pievieno -n opcija, un tā netiks nokopēta failā uz nevienu galamērķi, kas ir norādīts echo izteiksmes argumentos, ja fails jau ir šajā galamērķī.

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

Lai iegūtu vairāk informācijas par jebkuru no šīm komandām, ierakstiet komandu Linux etiķeti, vīrieti xargs vai vīrusu cp.