GNU/Linux >> Linux Esercitazione >  >> Linux

Copia file e crea directory di destinazione allo stesso tempo

Di solito copiamo i file da una posizione a un'altra esistente usando comandi come cp , rsync e scp ecc. Se la posizione di destinazione non esiste, prima la creiamo e quindi il file di copia in quella posizione appena creata. Fino ad ora, questo è il modo in cui di solito copio i file da una posizione all'altra dalla riga di comando. Sapevi che possiamo copiare un file e creare automaticamente la directory di destinazione se non esiste? No? Nessun problema! In questa guida vedremo come copiare file e creare directory di destinazione contemporaneamente, con un solo comando, in Linux.

Si prega di notare che non sto parlando di combinare due comandi. Ad esempio, chiunque potrebbe farlo combinando due comandi come di seguito:

$ mkdir -p destination && cp source_file destination

Ma questo non è un singolo comando. Qui abbiamo usato due comandi, ovvero mkdir e cp . In realtà è un comando one-liner. Ora lascia che ti mostri come eseguire la stessa attività utilizzando un solo comando.

Copia file e crea directory di destinazione contemporaneamente in Linux

Possiamo farlo usando in tre diversi metodi. Per prima cosa vedremo come farlo usando install comando.

Metodo 1:utilizzo di install comando

L'install comando copia i file in qualsiasi destinazione a tua scelta in Linux. È usato specialmente per questo scopo da sistemi di build come automake . Fa parte di GNU coreutils, quindi non è necessario installarlo.

Per copiare un file e creare contemporaneamente la directory di destinazione utilizzando install comando, esegui semplicemente:

$ install -D source-file destination-directory

Esempio:

Il comando seguente copia un file chiamato sk.txt a una directory di destinazione denominata ostechnix . Si prega di notare che la directory di destinazione non esiste. Copieremo il file e creeremo la directory di destinazione allo stesso tempo con install comando come di seguito:

$ install -D sk.txt ostechnix/sk.txt

Verifica se il file è stato copiato in ostechnix directory elencandone il contenuto con ls comando:

$ ls ostechnix/
sk.txt

Vedere? Non ho creato prima la directory di destinazione. Il comando di installazione ha creato automaticamente la directory e ha salvato il file in essa.

Comodo, vero? Infatti! Questa è una delle funzioni utili di install comando. Si può usare negli script di shell.

Ci sono alcune limitazioni in questo metodo. È necessario menzionare il nome del file di origine alla fine del percorso di destinazione. Se non specifichi il nome del file, install il comando non lo copierà e visualizzerà il seguente errore:

$ install -D sk.txt ostechnix/
install: target 'ostechnix/' is not a directory: No such file or directory

Puoi copiare un file alla volta. Non è possibile copiare più file su più destinazioni utilizzando install comando.

Possiamo anche copiare file e modificare la proprietà, i permessi allo stesso tempo usando install comando come descritto nella seguente guida.

  • Come copiare file e modificare contemporaneamente la proprietà e le autorizzazioni

Per maggiori dettagli sul comando di installazione, fare riferimento alla sua pagina manuale.

$ man install

Metodo 2:utilizzo di cp comando

In genere, utilizziamo cp comando per copiare i file da un posto all'altro. Il cp comando ha un'opzione denominata --parents che ci consente di copiare l'intera struttura di directory del file di origine e salvarlo nella destinazione.

Ad esempio, diciamo, il sk.txt il file viene salvato in ~/Downloads directory e volevi copiarlo in ~/Documents directory. Se copi il file usando cp comando da ~/Downloads a ~/Documents , il file verrà salvato in una struttura di directory come questa -> ~/Documents/Downloads/sk.txt .

Facciamolo in tempo reale e vediamo cosa succede.

$ cp --parents Downloads/sk.txt ~/Documents/

Ora esegui l'tree comando per controllare ~/Documents contenuto della directory:

$ tree Documents/
Documents/
└── Downloads
    └── sk.txt

1 directory, 1 file

Ricorda che non abbiamo creato alcuna directory all'interno di ~/Documents Posizione. Il --parents opzione del cp comando ha preservato la struttura della directory del file di origine.

A differenza di install comando, non è necessario specificare il nome del file alla fine della directory di destinazione.

Questo non è direttamente correlato al nostro argomento. Tuttavia, il cp il comando ha creato automaticamente le directory di destinazione, ovvero ha preservato la struttura della directory del file di origine.

Metodo 3:utilizzo di rsync comando

Rsync è una soluzione ideale per copiare e fare il backup dei dati tra directory locali e remote. Per copiare file e creare directory di destinazione in un momento utilizzando il comando rsync, eseguire:

$ rsync sk.txt ostechnix/

Dove la directory chiamata ostechnix non deve esistere. Rsync lo creerà automaticamente e salverà il file sorgente al suo interno.

Tra questi tre comandi, preferisco install comando. Perché posso creare directory nidificate (directory all'interno di un'altra directory) usando install comando. Il cp e rsync i comandi possono creare solo una directory, per quanto ne so. Per favore correggimi se sbaglio.

Lettura correlata:

  • Come mantenere intatte la proprietà e le autorizzazioni dei file durante la copia di file o directory

Linux
  1. Trova file e directory su Linux con il comando find

  2. Come creare un alias e utilizzare il comando alias in Linux

  3. Come copiare file e modificare la proprietà, le autorizzazioni allo stesso tempo

  4. Trova i file e le directory più grandi in Linux

  5. Comando per creare directory mirate numerate in sequenza e spostare file in batch?

Come spostare file e directory in Linux (comando mv)

Come utilizzare il comando cp per copiare file e directory

Come copiare file e directory nel terminale Linux

4 modi per trasferire file e directory su Linux

Comando Stat:Visualizza gli attributi di file e directory

Copia i file in modo sicuro con il comando SCP