Slik kopierer du en fil til flere kataloger med en kommando i Linux
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 cp
kommandoen, kobling til kildefilen og målkatalogen:
cp ~ / Dokumenter / FileToBeCopied.txt ~ / TextFiles /
For å kopiere den til to flere kataloger, ville mange mennesker bare kjøre kommandoen to ganger med forskjellige destinasjoner:
cp ~ / Dokumenter / FileToBeCopied.txt ~ / Dropbox /
cp ~ / Dokumenter / 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. De ekko
kommandoen skriver normalt til skjermen. Men i dette tilfellet ønsker vi å mate utgangen av ekko
kommando som input til xargs
kommando. For å gjøre dette bruker vi rørsymbolet ( |
) som mater utgang fra en kommando som inngang til en annen. De xargs
kommandoen vil kjøre cp
kommandoen tre ganger, hver gang du legger til den neste katalogbanen, pipet til den fra ekko
kommandoen til slutten av cp
kommando. Det er tre argumenter som sendes til xargs
, men -n 1
alternativ på xargs
kommando forteller det å bare legge til en av disse argumentene om gangen til cp
kommandoen hver gang den kjøres.
Så, å holde fast ved vårt eksempel fra tidligere, de tre separate cp
kommandoer over kan kombineres til en kommando som dette:
ekko ~ / Tekstfiler / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp ~ / Documents / FileToBeCopied.txt
Merk at hvis filen som kopieres finnes i en 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 for å kopiere en fil til et enkelt sted, kan du legge til -Jeg
alternativ for å spørre om du vil erstatte en eksisterende fil. Imidlertid -Jeg
Alternativet er et interaktivt alternativ (det forårsaker cp
kommando for å be om innspilling fra brukeren), og du kan ikke bruke et interaktivt alternativ med cp
kommando når du bruker den sammen med xargs
.)
En annen ting å vurdere, er at hvis du kopierer en veldig stor fil, vil du kanskje legge til no-clobber ( -n
) alternativet til cp
kommando i kommandoen over 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 ~ / Tekstfiler / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp -n ~ / Documents / FileToBeCopied.txt
Skriv mann ekko, mann xargs eller mann cp på kommandolinjen i Linux for mer informasjon om noen av disse kommandoene.