Come copiare un file in più directory con un comando in Linux

Come copiare un file in più directory con un comando in Linux
Come copiare un file in più directory con un comando in Linux

Video: Come copiare un file in più directory con un comando in Linux

Video: Come copiare un file in più directory con un comando in Linux
Video: WINDOWS 10 - Come formattare e gestire le partizioni di un disco - YouTube 2024, Aprile
Anonim
Copiare un file con la riga di comando di Linux è facile. Tuttavia, che cosa succede se si desidera copiare lo stesso file in più posizioni diverse? È anche facile, e ti mostreremo come farlo con un comando.
Copiare un file con la riga di comando di Linux è facile. Tuttavia, che cosa succede se si desidera copiare lo stesso file in più posizioni diverse? È anche facile, e ti mostreremo come farlo con un comando.

Normalmente, per copiare un file, si usa il

cp

comando, collegamento al file sorgente e alla directory di destinazione:

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

Per copiarlo su altre due directory, molte persone eseguono il comando altre due volte, con destinazioni diverse:

cp ~/Documents/FileToBeCopied.txt ~/Dropbox/

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

Tuttavia, possiamo eseguire lo stesso compito con un solo comando:
Tuttavia, possiamo eseguire lo stesso compito con un solo comando:

echo dir1 dir2 dir3 | xargs -n 1 cp file1

Ecco come funziona questo comando. Il

echo

il comando normalmente scrive sullo schermo. Tuttavia, in questo caso, vogliamo alimentare l'output di

echo

comando come input per

xargs

comando. Per fare questo, usiamo il simbolo del tubo (

|

) che alimenta l'output da un comando come input a un altro. Il

xargs

il comando eseguirà il

cp

comando tre volte, ogni volta accodando il successivo percorso di directory convogliato dal file

echo

comando fino alla fine del

cp

comando. Sono stati passati tre argomenti

xargs

ma il

-n 1

opzione sul

xargs

comando dice di aggiungere solo uno di questi argomenti alla volta al

cp

comando ogni volta che viene eseguito.

Quindi, per seguire il nostro esempio di prima, i tre separati

cp

i comandi sopra possono essere combinati in un comando come questo:

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

Si noti che se il file da copiare esiste in una qualsiasi delle directory di destinazione specificate, il file in quella destinazione verrà sostituito automaticamente. Non ti verrà chiesto se desideri sostituire il file. (Normalmente, quando usi il
Si noti che se il file da copiare esiste in una qualsiasi delle directory di destinazione specificate, il file in quella destinazione verrà sostituito automaticamente. Non ti verrà chiesto se desideri sostituire il file. (Normalmente, quando usi il

cp

comando per copiare un file in una singola posizione, è possibile aggiungere il

-i

possibilità di chiedere se si desidera sostituire un file esistente. comunque, il

-i

l'opzione è un'opzione interattiva (causa il

cp

comando per chiedere l'input dell'utente) e non è possibile utilizzare un'opzione interattiva con

cp

comando quando lo si utilizza in combinazione con

xargs

.)

Un'altra cosa da considerare, è che se si sta copiando un file molto grande, si potrebbe voler aggiungere il no-clobber (

-n

) opzione per

cp

comando nel singolo comando sopra. Questa opzione impedisce automaticamente che un file venga sovrascritto in una destinazione se esiste già lì. Se stai copiando un file molto grande su una rete, potrebbe essere lento e potresti voler evitare di utilizzare le risorse richieste per copiare e sostituire il file. Il seguente comando aggiunge il

-n

opzione, e non copierà il file in nessuna destinazione elencata negli argomenti dell'istruzione echo, se il file esiste già in quella destinazione.

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

Consigliato: