Startpagina » hoe » Hoe een bestand naar meerdere mappen te kopiëren met één commando in Linux

    Hoe een bestand naar meerdere mappen te kopiëren met één commando in Linux

    Het kopiëren van een bestand met de Linux-opdrachtregel is eenvoudig. Wat als u hetzelfde bestand naar verschillende locaties wilt kopiëren? Dat is ook eenvoudig en we laten u zien hoe u dat doet met één opdracht.

    Normaal gesproken zou u om het ene bestand te kopiëren, het cp commando, linken naar het bronbestand en de doelmap:

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

    Om het naar nog twee mappen te kopiëren, zouden veel mensen de opdracht nog twee keer uitvoeren, met verschillende bestemmingen:

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

    We kunnen echter dezelfde taak uitvoeren met één opdracht:

    echo dir1 dir2 dir3 | xargs -n 1 cp-bestand1

    Hier is hoe deze opdracht werkt. De echo commando schrijft normaal gesproken naar het scherm. In dit geval willen we echter de uitvoer van de echo commando als invoer voor de xargs commando. Om dit te doen, gebruiken we het pijpsymbool ( | ) die de uitvoer van de ene opdracht voedt als invoer voor een andere. De xargs commando zal de cp commando drie keer, telkens het toevoegen van het volgende directorypad dat er vanaf de echo commando aan tot het einde van de cp commando. Er zijn drie argumenten die worden doorgegeven aan xargs , maar de -n 1 optie op de xargs commando geeft aan dat het slechts één van die argumenten tegelijk moet toevoegen aan de cp opdracht elke keer dat het wordt uitgevoerd.

    Dus om ons voorbeeld van eerder te volgen, zijn de drie gescheiden cp bovenstaande commando's kunnen worden gecombineerd in één opdracht als deze:

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

    Merk op dat als het bestand dat wordt gekopieerd bestaat in een van de gespecificeerde doelmappen, het bestand in die bestemming automatisch zal worden vervangen. U wordt niet gevraagd of u het bestand wilt vervangen. (Normaal gesproken wanneer u de cp opdracht om een ​​bestand naar een enkele locatie te kopiëren, kunt u de -ik optie om te vragen of u een bestaand bestand wilt vervangen. echter, de -ik optie is een interactieve optie (het veroorzaakt de cp commando om invoer van de gebruiker te vragen) en u kunt geen interactieve optie gebruiken met de cp commando bij gebruik in combinatie met xargs .)

    Een ander ding om te overwegen, is dat als je een heel groot bestand kopieert, je misschien het no-clobber wilt toevoegen ( -n ) optie voor de cp commando in het enkele commando hierboven. Deze optie voorkomt automatisch dat een bestand wordt overschreven in een bestemming als het daar al bestaat. Als u een zeer groot bestand via een netwerk kopieert, is het mogelijk traag en wilt u mogelijk niet de bronnen gebruiken die nodig zijn om het bestand te kopiëren en te vervangen. Met de volgende opdracht wordt de -n optie en kopieert het bestand niet naar een bestemming die wordt vermeld in de argumenten bij de echo-instructie, als het bestand al in die bestemming bestaat.

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

    Typ man echo, man xargs of man cp op de opdrachtregel in Linux voor meer informatie over een van deze opdrachten.