Hur man Kopierar en Fil till Flera Kataloger Med Ett Kommando i Linux

Att kopiera en fil med Linux kommandorad är lätt. Emellertid vad, om du vill kopiera samma fil till flera olika platser? Det är lätt, alltför, och vi kommer att visa dig hur man gör det med ett kommando.

Normalt, för att kopiera en fil, som du vill använda cp-kommandot, länka till källfilen och destination directory:

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

För att kopiera det till två kataloger, många människor skulle bara köra kommandot två gånger, med olika destinationer:

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

Men vi kan göra samma uppgift med ett enda kommando:

echo kat1 kat2 kat3 | xargs-n 1 cp fil1

Här är hur detta kommando fungerar. Echo-kommandot normalt skriver till skärmen. Men i det här fallet vill vi att mata utdata för echo-kommandot som indata till xargs kommando. För att göra detta använder vi vertikalstreck ( | ) som matar utdata från ett kommando som indata till ett annat. Den xargs kommandot kommer att köras cp-kommandot tre gånger, varje gång vår nästa katalog-väg ledas till det från echo kommandot på till slutet av cp-kommandot. Det finns tre argument som skickas till xargs , men -n 1 alternativ på xargs kommando som talar om för det att bara lägga en av dessa argument på en gång att cp-kommandot varje gång det körs.

Så, för att hålla med vårt exempel från tidigare, de tre separata cp-kommandona ovan kan kombineras till ett kommando som det här:

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

Observera att om filen kopieras finns i någon av destinationen kataloger angivna filen i den destinationen kommer att ersättas automatiskt. Du kommer inte att bli tillfrågad om du vill ersätta filen. (Normalt, när du använder cp-kommandot för att kopiera en fil till en enda plats, kan du lägga till den -jag möjlighet att fråga om du vill ersätta en befintlig fil. Men -alternativet är en interaktiv alternativet (det orsakar cp-kommandot för att be om input från användaren) och du kan inte använda en interaktiv alternativ med cp-kommandot när du använder det i samband med xargs .)

En annan sak att tänka på, är att om du kopierar en mycket stor fil, som du kanske vill lägga till no-clobber ( -n ) möjlighet att cp-kommandot i den enda kommando ovan. Det här alternativet automatiskt förhindrar att en fil skrivs över på en destination om den redan finns där. Om du kopierar en mycket stor filen över ett nätverk, det kan vara långsam och du kanske vill undvika att använda de resurser som krävs för att kopiera och ersätt filen. Följande kommando lägger-n alternativet, och kommer inte att kopiera filen till valfri destination som anges i de argument som att eko uttalande om filen redan existerar på denna destination.

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

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


Posted

in

by

Tags: