Het Kopiëren van een Bestand naar Meerdere Mappen Met Één Opdracht in Linux

0
546

Het kopiëren van een bestand met de Linux commando-regel is eenvoudig. Maar wat als u wilt kopiëren van hetzelfde bestand op verschillende locaties? Dat is makkelijk, ook, en we zullen je laten zien hoe dat te doen met een opdracht.

Normaal gesproken, te kopiëren bestand, zou u gebruik maken van het cp commando, met een link naar de bron-en doelmap:

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

Om te kopiëren naar twee directories, vele mensen zouden gewoon voer de volgende opdracht twee keer uit, met verschillende doelen:

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

Echter, we doen dezelfde taak met één opdracht:

echo map1 map2 map3 | xargs -n 1 cp file1

Hier is hoe dit commando werkt. Het echo commando normaal schrijft naar het scherm. Echter, in dit geval willen we voeden de uitgang van het echo commando als input voor de xargs opdracht. Om dit te doen gebruiken we het sluisteken ( | ) die zich voedt uitvoer van een opdracht als invoer voor een ander. De xargs opdracht zal uitvoeren van het cp commando drie keer, elke keer dat het toevoegen van het volgende pad van de map met achtergrondmuziek van het echo commando tot het einde van het cp commando. Er zijn drie argumenten worden doorgegeven aan xargs , maar de -n 1 optie op de xargs commando vertelt het toevoegen van een van die argumenten in een keer naar het cp commando, elke keer dat deze worden uitgevoerd.

Dus, aan de stok met het voorbeeld van vroeger, de drie afzonderlijke cp commando ‘ s hierboven kunnen gecombineerd worden in een 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 ieder van de bestemming directories opgegeven, wordt het bestand in die bestemming wordt automatisch vervangen. U zal niet worden gevraagd of u het bestand wilt vervangen. (Normaal gesproken, wanneer u het cp commando gebruiken om een bestand te kopiëren naar een locatie, kun je de-i optie om te vragen of u wilt het vervangen van een bestaande bestand. Echter, de -i optie is een optie interactief (het zorgt ervoor dat de cp commando om te vragen om input van de gebruiker) en u kunt geen gebruik maken van een interactief optie met het cp commando wanneer het wordt gebruikt in combinatie met xargs .)

Een ander ding om te overwegen, is dat als u het kopiëren van een heel groot bestand is, kunt u de geen-afranselen ( -n ) optie om het cp commando in één commando hierboven. Deze optie wordt automatisch voorkomen dat een bestand wordt overschreven in een bestemming als het al bestaat. Als u het kopiëren van een zeer groot bestand via een netwerk, het is misschien langzaam en je zou willen om te voorkomen dat het gebruik van de middelen die nodig zijn om te kopiëren en vervang het bestand. De volgende commando voegt de optie-n, en zal geen kopie van het bestand naar een willekeurige bestemming vermeld in de argumenten voor de echo statement, indien het bestand al bestaat in die bestemming.

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

Typ man echo, man xargs, of de mens cp op de commando-regel Linux voor meer informatie over een van deze commando ‘ s.