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

    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.