Hemsida » hur » Så här kopierar du en fil till flera kataloger med ett kommando i Linux

    Så här kopierar du en fil till flera kataloger med ett kommando i Linux

    Att kopiera en fil med Linux-kommandoraden är enkelt. Men, om du vill kopiera samma fil till flera olika platser? Det är också enkelt, och vi visar dig hur du gör det med ett kommando.

    Normalt, för att kopiera en fil, skulle du använda cp kommando, länka till källfilen och målkatalogen:

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

    För att kopiera den till två kataloger, skulle många bara springa kommandot två gånger med olika destinationer:

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

    Vi kan dock göra samma uppgift med ett kommando:

    echo dir1 dir2 dir3 | xargs -n 1 cp file1

    Så här fungerar den här kommandot. De eko Kommandot skriver normalt till skärmen. I det här fallet vill vi emellertid mata produktionen från eko kommando som input till xargs kommando. För att göra detta använder vi rörsymbolen ( | ) som matar utmatning från ett kommando som ingång till en annan. De xargs kommandot kommer att köra cp kommando tre gånger, varje gång du lägger till den nästa katalogvägen som pipas till den från eko kommandot till slutet av cp kommando. Det finns tre argument som skickas till xargs , men -n 1 alternativ på xargs kommando berättar att det bara lägger till en av dessa argument i taget till cp kommandot varje gång det körs.

    Så, för att hålla fast vid vårt exempel från tidigare separeras de tre cp kommandon ovan kan kombineras till ett kommando så här:

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

    Observera att om filen som kopieras finns i någon av de angivna målkatalogerna, kommer filen i den destinationen att ersättas automatiskt. Du kommer inte att bli ombedd om du vill ersätta filen. (Normalt när du använder cp kommando att kopiera en fil till en enda plats, kan du lägga till -jag alternativ att fråga om du vill ersätta en befintlig fil. Men -jag alternativet är ett interaktivt alternativ (det orsakar cp kommando att be om inmatning från användaren) och du kan inte använda ett interaktivt alternativ med cp kommando när du använder den i samband med xargs .)

    En annan sak att tänka på är att om du kopierar en mycket stor fil kanske du vill lägga till no-clobber ( -n ) alternativet till cp kommando i kommandot ovanför. Detta alternativ förhindrar automatiskt att en fil skrivs över i en destination om den redan finns där. Om du kopierar en mycket stor fil via ett nätverk kan det vara långsamt och du kanske vill undvika att använda de resurser som krävs för att kopiera och ersätta filen. Följande kommando lägger till -n alternativet, och kommer inte kopiera filen till någon destination som anges i argumenten till ekotillståndet, om filen redan existerar i den destinationen.

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

    Skriv man echo, man xargs eller man cp på kommandoraden i Linux för mer information om någon av dessa kommandon.