28Jun

Kako kopirati datoteko v več imenikov z enim ukazom v Linuxu

Kopiranje datoteke z ukazno vrstico Linux je preprosto. Kaj pa, če želite kopirati isto datoteko na več različnih lokacijah? Tudi to je preprosto in vam bomo pokazali, kako to narediti z enim ukazom.

Običajno, če želite kopirati eno datoteko, uporabite ukaz cp, ki se povezuje z izvorno datoteko in ciljnim imenikom:

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

Če želite kopirati v še dva imeniška mesta, bi veliko ljudi samo zagnalo ukaz dvavečkrat z različnimi cilji:

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

Vendar lahko enako nalogo naredimo z enim ukazom:

echo dir1 dir2 dir3 |xargs -n 1 cp datoteka1

To naredi tako, da deluje ta ukaz. Ukaz echo običajno piše na zaslon. Vendar v tem primeru želimo podati izhod ukaza echo kot vhod v ukaz xargs.Če želite to narediti, uporabimo simbol cevi( |), ki hrani iz enega ukaza kot vhod v drugega. Ukaz xargs bo trikrat zagnal ukaz cp, vsakič ko bo dodal naslednjo pot imenika, ki se ji bo odzvala od ukaza echo do konca ukaza cp. Obstajajo trije argumenti, ki se prenesejo na xargs, vendar pa opcija -n 1 v ukazu xargs pove, da vsakokrat, ko se zažene, prilepi enega od teh argumentov na ukaz cp.

Torej, če se držimo našega primera iz prejšnjega, se lahko trije ločeni ukazi cp združijo v en ukaz, kot je ta:

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

Upoštevajte, da če datoteka, ki se kopira, obstaja v katerem koli imenovanem imeniku, se datoteka v tem cilju samodejno zamenja. Ne boste vprašani, ali želite datoteko zamenjati.(Običajno, ko z ukazom cp kopirate datoteko na eno samo lokacijo, lahko dodate možnost -i, da vprašate, ali želite zamenjati obstoječo datoteko. Vendar pa je možnost -i interaktivna možnost( povzročiukaz cp, da zaprosijo za vnos od uporabnika) in z uporabo ukaza cp ne morete uporabiti interaktivne možnosti, ko jo uporabljate v povezavi z xargs.)

Še ena stvar, ki jo je treba upoštevati, je, da če kopirate zelo veliko datoteko,želijo dodati opcijo no-clobber( -n) v ukaz cp v zgornjem zgornjem ukazu. Ta možnost samodejno preprečuje, da bi bila datoteka prepisana v cilj, če tam že obstaja.Če kopirate zelo veliko datoteko prek omrežja, je morda počasen in morda se želite izogniti uporabi virov, potrebnih za kopiranje in zamenjavo datoteke. Naslednji ukaz doda opcijo -n in datoteke ne bo kopiral na kateri koli cilj, naveden v argumentih, v izjavo echo, če datoteka že obstaja na tem cilju.

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

Za več informacij o teh ukazih v ukazni vrstici v Linuxu vnesite človeške echo, man xargs ali man cp.