GNU/Linux >> Linux Esercitazione >  >> Linux

Copia un file in più directory dalla riga di comando su Linux

In questa breve guida, discuteremo come copiare un file in più directory dalla riga di comando usando find , cp , echo , xargs e tee comandi su Linux.

L'altro giorno volevo copiare alcuni video in cartelle diverse nel mio desktop Arch Linux. Come già saprai, possiamo farlo facilmente facendo clic con il tasto destro del mouse sul file, selezionando Copy opzione dal menu contestuale e incollarlo nella directory/cartella di destinazione.

Tuttavia, vorrei sapere se esiste un altro modo per copiare il file in più directory in una volta . Ho pensato che sarebbe stato d'aiuto quando volevo copiare un singolo file in un numero di directory diverse contemporaneamente. Ho fatto alcune ricerche sul Web e ho trovato le seguenti soluzioni.

Avviso importante:

Si prega di notare che i seguenti comandi non chiederanno alcuna conferma. Se esiste un file con lo stesso nome nella directory di destinazione, verrà sostituito automaticamente.

Se non conosci Linux, ti suggerisco di testare i comandi in qualsiasi macchina di prova prima di iniziare a usarli nella produzione. In questo modo puoi prevenire l'inutile perdita di dati.

Copia un file in più directory dalla riga di comando su Linux

Ho un file di testo chiamato ostechnix.txt nella mia home directory e volevo copiarlo in due directory diverse chiamate Downloads e Documents in una volta sola.

Per prima cosa, vediamo come copiare il file in più directory diverse usando find e cp comandi.

Metodo 1:utilizzo dei comandi trova e cp

Possiamo copiare un singolo file in più directory contemporaneamente usando find e cp comandi.

Il find è un comando Unix e Linux per cercare file in una gerarchia di directory e il comando cp viene utilizzato per copiare file e directory.

Per copiare un file chiamato ostechnix.txt a ~/Downloads e ~/Documents directory utilizzando find e cp comando, esegui:

$ find ~/Downloads/ ~/Documents/ -maxdepth 0 -type d -exec cp ostechnix.txt {} \;

Il comando precedente copierà il file ostechnix.txt nella directory corrente nel ~/Downloads e ~/Documents directory.

Se non specifichi '-maxdepth 0' opzione, il ostechnix.txt il file verrà copiato in  ~/Downloads , ~/Documents directory e anche nelle loro sottodirectory. Quindi, non dimenticare di specificarlo.

Come ho avvertito in precedenza, se è già presente qualche file con lo stesso nome (ad esempio ostechnix.txt ) in una qualsiasi delle directory di destinazione, il comando sopra sovrascriverà semplicemente il file esistente senza alcuna conferma.

Se non vuoi sovrascrivere il file esistente, puoi usare -n contrassegnare con cp comando come di seguito:

$ find ~/Downloads/ ~/Documents/ -maxdepth 0 -type d -exec cp -n ostechnix.txt {} \;

Ora, non sostituirà il file di destinazione se esiste già nelle posizioni di destinazione.

Metodo 2:utilizzo dei comandi echo, xargs e cp

L'altro modo per copiare file in più posizioni è usare echo , xargs e cp comandi.

Come già saprai, il cp comando viene utilizzato per copiare i file e le directory e xargs comando viene utilizzato per creare ed eseguire righe di comando dallo standard input.

Per copiare un file in più directory usando echo , xargs e cp comandi, esegui:

$ echo ~/Downloads ~/Documents | xargs -n 1 cp ostechnix.txt

Analizziamo il comando precedente e vediamo come funziona.

In genere, l'echo comando stampa la stringa o il testo specificati sullo standard output. Ma in questo caso, convogliamo l'output di echo comando a xargs . Qui, echo il comando invierà il percorso della directory a xargs come input.

xargs il comando esegue il cp comando due volte e aggiunge il percorso di ogni directory alla fine del cp comando.

Il xargs command riceve due argomenti (cioè il percorso della directory) da echo comando. Il -n 1 opzione su xargs il comando dice a xargs per aggiungere solo uno di quegli argomenti alla volta.

Anche in questo caso, il comando precedente sostituisce il file di destinazione che già esiste. Se non vuoi sostituire il file di destinazione, aggiungi -n flag nel comando:

$ echo ~/Downloads ~/Documents | xargs -n 1 cp -n ostechnix.txt

Metodo 3 - Utilizzo del comando tee

Tee è un'utilità Unix e Linux utilizzata per leggere dallo standard input e scrivere su file e output standard.

Ora, copiamo il otechnix.txt file in due directory diverse denominate /home/sk/Downloads e /home/sk/Documents .

Per farlo, esegui semplicemente il seguente comando dal Terminale:

$ tee /home/sk/Downloads/ostechnix.txt /home/sk/Documents/ostechnix.txt < /home/sk/ostechnix.txt

Il comando precedente copierà il ostechnix.txt file dalla home directory a ~/Downloads e ~/Documents directory.

Tieni presente che tee il comando scriverà anche l'input nello standard output. Se non vuoi tee comando per fare ciò, reindirizza l'output standard a /dev/null come mostrato di seguito.

$ tee /home/sk/Downloads/ostechnix.txt /home/sk/Documents/ostechnix.txt < /home/sk/ostechnix.txt >/dev/null

Ancora una volta ti avverto. Se è già presente un file con lo stesso nome (ad esempio ostechnix.txt ) nelle destinazioni, il comando sopra sovrascriverà il file esistente.

Per i dettagli, controlla le pagine di gestione dei comandi precedenti:

$ man cp
$ man find
$ man xargs
$ man echo
$ man tee

Conclusione

Questo è il modo in cui copiamo un file in più directory contemporaneamente dalla riga di comando in Linux. Potrebbero esserci altri modi, ma credo che questi comandi siano molto semplici e facili da usare.

Ancora una volta, assicurati che i percorsi di destinazione siano corretti e, soprattutto, assicurati che non esista alcun file con lo stesso nome nella posizione di destinazione.

Lettura correlata:

  • Come trovare e copiare determinati tipi di file da una directory all'altra in Linux
  • Copia tipi di file specifici mantenendo la struttura delle directory in Linux
  • Copia file e crea directory di destinazione contemporaneamente
  • Come copiare file e modificare contemporaneamente la proprietà e le autorizzazioni
  • Come mantenere intatte la proprietà e le autorizzazioni dei file durante la copia di file o directory
  • Riprendi i file parzialmente trasferiti su SSH utilizzando Rsync
  • Come trasferire rapidamente file di grandi dimensioni in rete in Linux e Unix
  • Copia avanzata:aggiungi la barra di avanzamento ai comandi cp e mv in Linux
  • Copia i contenuti dei file negli Appunti senza visualizzarli

Linux
  1. Come eliminare file e directory in Linux dalla riga di comando

  2. Copia file e directory in Linux

  3. Cerca torrent dalla riga di comando in Linux

  4. Eliminazione di righe specifiche da un file nella riga di comando di Linux

  5. Come posso copiare una cartella dalla riga di comando di Linux?

Come estrarre o decomprimere i file tar.gz dalla riga di comando di Linux

Come copiare un file in più directory in Linux

Comando Ls in Linux (Elenca file e directory)

Comando Cp in Linux (copia file)

Comando Diff in Linux con esempi

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