In Linux, il comando 'cp ', quali standard per 'Copia ' viene utilizzato per copiare file e cartelle in un'altra cartella. È disponibile per impostazione predefinita in Linux come parte di GNU Coreutils set di strumenti.
L'uso più elementare del comando cp è specificare i file da copiare come argomenti e specificare la cartella di destinazione come ultimo argomento.
$ cp file1 file2 file3... fileN target_folder/
Copia file con estensioni di file specifiche
Puoi anche copiare file con la stessa estensione (es. .txt
, .jpg
, .mp4
) insieme utilizzando caratteri jolly, come mostrato di seguito:
$ cp *.jpg *.mp4 *.mp3 media/
Questo copierà tutti i JPEG immagini, MP3, e MP4 file multimediali nella cartella "media '. Si noti che questo può essere utilizzato solo per i file. Se provi a copiare le cartelle nel formato precedente, viene visualizzato un avviso che la cartella è "Non vuota '.
Per copiare le cartelle, dobbiamo specificare il '-r'
(ricorsivo ) bandiera. Ricorsivo significa che verranno copiati tutti i file in quella cartella, i file nelle sottocartelle e così via.
$ cp -r folder1/ folder2/ file1 file2 target_folder/
Tuttavia, non c'è modo all'interno di 'cp' per copiare file di un'estensione specifica in modo ricorsivo. Ogni volta che '-r'
è specificato, il programma considera sempre tutti i file nelle sottocartelle per la copia.
Trova e copia file con estensione file
Per ottenere ciò, utilizziamo il comando trova, che viene semplicemente utilizzato per cercare file e cartelle in Linux in base ai parametri del file o della cartella:nome file, estensione, dimensione, ecc.
Useremo il comando trova per individuare ricorsivamente i file con un'estensione di file specifica e quindi passare questo output a cp comando per copiarli.
Sintassi per individuare i file di un'estensione specifica utilizzando il comando trova è:
$ find <folder_to_search> -name ‘*.<extension>’
Ad esempio, per individuare ricorsivamente tutti i file JPG nella cartella corrente:
$ find . -name '*.jpg'
Infine, dobbiamo reindirizzare questo output al comando cp . Per fare ciò, utilizziamo 'xargs' comando per creare 'cp' considera l'output di 'trova' come suoi argomenti. Inoltre, utilizziamo il '-t'
bandiera di cp , per specificare la directory di destinazione, senza la quale il programma considera l'output di 'find' come directory di destinazione.
$ find . -name '*.jpg' | xargs cp -t Pictures2/
Quindi, tutti i file con estensione '.jpg'
sono stati copiati nella cartella 'Pictures2' .
Conclusione
In questo articolo, abbiamo imparato come copiare file con un'estensione specifica in modo ricorsivo in Linux. Nota che questo metodo è utile se hai a che fare con un numero inferiore di file. Per un numero enorme di file (ad esempio, in decine di migliaia), è necessario utilizzare un approccio diverso per copiare i file in modo ricorsivo.
Se hai domande o feedback, faccelo sapere nei commenti qui sotto.