28Jun

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

click fraud protection

Det er nemt at kopiere en fil med Linux-kommandolinjen. 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 kommandoen cp, der linker til kildefilen og destinationsmappen:

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

Hvis du vil kopiere den til to andre mapper, ville mange mennesker bare køre kommandoen toflere gange med forskellige destinationer:

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

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

echo dir1 dir2 dir3 |xargs -n 1 cp file1

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

instagram viewer

For at holde fast ved vores eksempel fra tidligere kan de tre separate cp kommandoer ovenfor kombineres til en kommando som denne:

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

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

En anden ting at overveje, er at hvis du kopierer en meget stor fil, kan du måskeønsker at tilføje no-clobber( -n) til cp kommandoen 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 indstillingen, og vil ikke kopiere filen til en destination angivet i argumenterne til ekko-erklæringen, hvis filen allerede findes i den destination.

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

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