Come Copiare un File in una Directory Multiple Con Un solo Comando in Linux

0
1414

La copia di un file con la riga di comando di Linux è facile. Tuttavia, se si desidera copiare lo stesso file in diverse posizioni? Facile, troppo, e vi mostreremo come farlo con un solo comando.

Normalmente, per copiare un file, utilizzare il comando cp, il collegamento al file di origine e la cartella di destinazione:

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

Per copiare due o più directory, molte persone basta eseguire il comando due volte, con diverse destinazioni:

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

Tuttavia, si può fare la stessa operazione con il comando:

eco dir1 dir2 dir3 | xargs -n 1 cp file1

Ecco come questo comando funziona. Il comando echo normalmente scrive sullo schermo. Tuttavia, in questo caso, si desidera inviare l’output del comando echo come input per il comando xargs. Per fare questo, si usa il simbolo pipe ( | ), che alimenta l’output di un comando come input di un altro. Il xargs comando verrà eseguito il comando cp tre volte, ogni volta, aggiungendo il successivo percorso di directory di sottofondo da il comando echo alla fine del comando cp. Ci sono tre argomenti passati a xargs , ma l’-n 1 opzione del comando xargs dice di aggiungere solo uno di quegli argomenti alla volta per il comando cp ogni volta che viene eseguito.

Quindi, continuare con il nostro esempio di prima, i tre diversi cp comandi di cui sopra possono essere combinati in un comando come questo:

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

Nota che se il file viene copiato esiste in qualsiasi directory di destinazione specificata, il file nella destinazione verrà sostituito automaticamente. Non vi verrà chiesto se si desidera sostituire il file. (Normalmente, quando si utilizza il comando cp per copiare un file in un unico luogo, è possibile aggiungere l’opzione-i per chiedere se si desidera sostituire un file esistente. Tuttavia, l’opzione-i è un sistema interattivo opzione (che provoca il comando cp chiedere per l’input da parte dell’utente) e non si possono usare le opzioni di interazione con il comando cp quando lo si utilizza in combinazione con xargs .)

Un’altra cosa da considerare, è che se si copia un file di dimensioni molto grandi, si potrebbe desiderare di aggiungere il no-clobber ( -n ) opzione per il comando cp nel singolo comando di cui sopra. Questa opzione impedisce automaticamente un file vengano sovrascritti in una destinazione se non esiste già. Se si copia un file molto grande in rete, può essere lento e si potrebbe desiderare di evitare di usare le risorse necessarie per copiare e sostituire il file. Il seguente comando consente di aggiungere l’opzione-n, e di non copiare il file per qualsiasi destinazione elencati negli argomenti per l’istruzione echo, se il file esiste già nella destinazione.

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

Il tipo di uomo eco, l’uomo xargs, o man cp sulla riga di comando di Linux per ulteriori informazioni su uno qualsiasi di questi comandi.