Hjemmeside » hvordan » Sådan kopieres en fil til flere mapper med en kommando i Linux

    Sådan kopieres en fil til flere mapper med en kommando i Linux

    Kopiering af en fil med Linux-kommandolinjen er let. Men hvad hvis du vil kopiere den samme fil til flere forskellige steder? Det er også nemt, og vi viser dig, hvordan du gør det med en kommando.

    Normalt, for at kopiere en fil, ville du bruge cp kommando, der linker til kildefilen og destinationsmappen:

    cp ~ / Dokumenter / FileToBeCopied.txt ~ / TextFiles /

    For at kopiere det til to flere mapper, ville mange mennesker bare køre kommandoen to gange med forskellige destinationer:

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

    Vi kan dog gøre den samme opgave med en kommando:

    echo dir1 dir2 dir3 | xargs -n 1 cp file1

    Sådan fungerer denne kommando. Det ekko kommandoen skriver normalt til skærmen. Men i dette tilfælde ønsker vi at fodre output fra ekko kommando som input til xargs kommando. For at gøre dette bruger vi rørsymbolet ( | ), der feeds output fra en kommando som input til en anden. Det xargs kommando vil køre cp kommandoen tre gange, hver gang der tilføjes den næste katalogvej, der er ledet til den fra ekko kommandoen til slutningen af cp kommando. Der er tre argumenter, der sendes til xargs , men -n 1 mulighed på xargs kommando fortæller det kun at tilføje en af ​​disse argumenter ad gangen til cp kommandoen hver gang den køres.

    Så, at holde fast ved vores eksempel fra tidligere, de tre adskilte cp Kommandoer ovenfor kan kombineres til en kommando som denne:

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

    Bemærk, at hvis filen, der kopieres, findes i en af ​​de angivne destinationsmapper, vil filen i den pågældende destination blive erstattet automatisk. Du bliver ikke spurgt, om du vil erstatte filen. (Normalt, når du bruger cp kommando til at kopiere en fil til et enkelt sted, kan du tilføje -jeg mulighed for at spørge, om du vil erstatte en eksisterende fil. Men den -jeg mulighed er en interaktiv mulighed (det forårsager cp kommando for at bede om input fra brugeren), og du kan ikke bruge en interaktiv mulighed med cp kommando, når du bruger den sammen med xargs .)

    En anden ting at overveje, er at hvis du kopierer en meget stor fil, vil du måske tilføje den no-clobber ( -n ) mulighed for cp kommando i kommandoen ovenfor. Denne indstilling forhindrer automatisk, at en fil overskrives i en destination, hvis den allerede findes der. Hvis du kopierer en meget stor fil via et netværk, kan det være langsomt, og du vil muligvis undgå at bruge de nødvendige ressourcer til at kopiere og erstatte filen. Følgende kommando tilføjer -n valgmulighed, og vil ikke kopiere filen til en destination angivet i argumenterne til ekko-erklæringen, hvis filen allerede findes i den destination.

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

    Skriv man ekko, mand xargs eller man cp på kommandolinjen i Linux for mere information om nogen af ​​disse kommandoer.