Kā kopēt failu vairākās direktorijās ar vienu komandu Linux
Faila kopēšana ar Linux komandrindu ir vienkārša. Tomēr, kas notiks, ja vēlaties kopēt to pašu failu vairākās dažādās vietās? Arī tas ir viegli, un mēs jums parādīsim, kā to izdarīt ar vienu komandu.
Parasti, lai kopētu vienu failu, lietotu cp
komandu, saistot to ar avota failu un galamērķa direktoriju:
cp ~ / Dokumenti / FileToBeCopied.txt ~ / TextFiles /
Lai kopētu to vēl divos katalogos, daudzi cilvēki vienkārši palaist komandu vēl divas reizes, ar dažādiem galamērķiem:
cp ~ / Dokumenti / FileToBeCopied.txt ~ / Dropbox /
cp ~ / Dokumenti / 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 fails1
Lūk, kā šī komanda darbojas. The atbalss
komandu parasti raksta uz ekrāna. Tomēr šajā gadījumā mēs vēlamies barot produkcijas izlaidi atbalss
komandu kā ievadi xargs
komandu. Lai to izdarītu, mēs izmantojam caurules simbolu ( |
), kas baro izvadi no vienas komandas kā ievadi citā. The xargs
komanda darbosies cp
komandu trīs reizes, katru reizi pievienojot nākamo direktoriju ceļu, kas tam pievienots atbalss
komandu uz cp
komandu. Ir nodoti trīs argumenti xargs
, bet -n 1
opcija xargs
komandai ir jāpievieno tikai viens no šiem argumentiem cp
komandu katru reizi, kad tas darbojas.
Tātad, lai saglabātu mūsu piemēru no agrāk, trīs atsevišķi cp
iepriekš minētās komandas var apvienot šādā komandā:
echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp ~ / Documents / FileToBeCopied.txt
Ņemiet vērā, ka, ja kopējamais fails atrodas kādā no norādītajiem adresātu katalogiem, faila atrašanās vieta tiks automātiski nomainīta. Jums netiks jautāts, vai vēlaties nomainīt failu. (Parasti, kad lietojat cp
komandu, lai kopētu failu vienā vietā, varat pievienot -i
iespēja uzdot jautājumu, vai vēlaties nomainīt esošo failu. Tomēr -i
opcija ir interaktīva iespēja (tā izraisa cp
komandu, lai pieprasītu ievadi no lietotāja) un jūs nevarat izmantot interaktīvu opciju cp
komandu, lietojot to kopā ar xargs
.)
Vēl viena lieta, kas jāapsver, ir tā, ka, ja kopējat ļoti lielu failu, iespējams, vēlēsities pievienot ne-clobber ( -n
) opcija cp
komandu iepriekš minētajā komandā. Šī opcija automātiski liedz failam pārrakstīt galamērķī, ja tā jau pastāv. Ja kopējat ļoti lielu failu tīklā, tas var būt lēns, un, iespējams, vēlēsities izvairīties no nepieciešamajiem resursiem, lai kopētu un aizstātu failu. Nākamā komanda pievieno -n
opcija, un kopēt failu nevienā no galamērķiem, kas argumentos ir norādīti atbalss paziņojumā, ja fails jau atrodas šajā galamērķī.
echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp -n ~ / Documents / FileToBeCopied.txt
Lai iegūtu plašāku informāciju par kādu no šīm komandām, Linux komandrindā ierakstiet man echo, man xargs vai man cp..