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.