28Jun

Slik kopierer du en fil til flere kataloger med en kommando i Linux

click fraud protection

Det er enkelt å kopiere en fil med Linux-kommandolinjen. Men hva om du vil kopiere den samme filen til flere forskjellige steder? Det er også enkelt, og vi vil vise deg hvordan du gjør det med en kommando.

Normalt, for å kopiere en fil, ville du bruke kommandoen cp, kobling til kildefilen og målkatalogen:

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

Hvis du vil kopiere den til to kataloger, vil mange bare kjøre kommandoen toflere ganger, med forskjellige destinasjoner:

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

Vi kan imidlertid gjøre samme oppgave med en kommando:

echo dir1 dir2 dir3 |xargs -n 1 cp file1

Slik fungerer denne kommandoen. Ekkokommandoen skriver normalt til skjermen. Men i dette tilfellet ønsker vi å mate utgangen av ekkokommandoen som input til xargs-kommandoen. For å gjøre dette bruker vi pipesymbolet( |) som mater utgang fra en kommando som input til en annen. Xargs-kommandoen kjører cp-kommandoen tre ganger, hver gang du legger til den neste katalogbanen som er pipet til den fra ekkokommandoen til slutten av cp-kommandoen. Det er tre argumenter som sendes til xargs, men alternativet-1 på xargs-kommandoen forteller at det bare skal legge til et av disse argumentene om gangen til cp-kommandoen hver gang den kjøres.

instagram viewer

Så, for å holde fast ved vårt eksempel fra tidligere, kan de tre separate cp-kommandoene ovenfor kombineres til en kommando som dette:

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

Merk at hvis filen som kopieres finnes i noen av de angitte målkatalogene, blir filen i den destinasjonen erstattet automatisk. Du blir ikke spurt om du vil erstatte filen.(Normalt, når du bruker cp-kommandoen til å kopiere en fil til et enkelt sted, kan du legge til -i-alternativet for å spørre om du vil erstatte en eksisterende fil. Men -i-alternativet er et interaktivt alternativ( det forårsaker atcp-kommando for å be om innspilling fra brukeren), og du kan ikke bruke et interaktivt alternativ med cp-kommandoen når du bruker den sammen med xargs.)

En annen ting å vurdere er at hvis du kopierer en veldig stor fil, kan du kanskjevil legge til no-clobber( -n) alternativet til cp-kommandoen i kommandoen ovenfor ovenfor. Dette alternativet forhindrer automatisk at en fil overskrives i en destinasjon hvis den allerede finnes der. Hvis du kopierer en veldig stor fil over et nettverk, kan det være sakte, og du vil kanskje unngå å bruke ressursene som kreves for å kopiere og erstatte filen. Følgende kommando legger til -n-alternativet, og vil ikke kopiere filen til et mål som er oppført i argumentene til ekko-setningen, hvis filen allerede eksisterer i den destinasjonen.

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

Type mann ekko, mann xargs eller mann cp på kommandolinjen i Linux for mer informasjon om noen av disse kommandoene.