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.