GNU/Linux >> Belajar Linux >  >> Linux

Cara Menyalin Banyak File di Linux

Kami menggunakan perintah cp di Linux untuk menyalin file dan direktori dari satu direktori ke direktori lain. Ini dapat digunakan untuk menyalin beberapa file atau direktori, atau dapat digunakan dengan '-r' argumen (yang merupakan singkatan dari 'rekursif ‘) untuk menyalin direktori dan seluruh struktur pohon direktori di bawahnya.

Sintaks yang digunakan untuk perintah cp adalah:

$ cp <file1> <file2> ... <fileN> <target_directory>
$ cp -r <directory1> <directory2> ... <directoryN> <target_directory>
$ cp file1 file2 file3 /tmp

Jika sejumlah besar file akan disalin, file tersebut dapat ditentukan dengan wildcard; jika diberi nama dalam pola berurutan (Misalnya namafile_1 , nama file_2 , dll.) atau jika ada banyak file dengan ekstensi yang sama (Misalnya .mp4 ).

$ cp *.txt /tmp
$ cp file_* /tmp

Perintah cp dengan demikian dapat memiliki sejumlah argumen, yang berupa file, direktori atau keduanya. Argumen terakhir adalah direktori target tempat mereka akan disalin.

Menyalin Sejumlah Besar File:Kesalahan “Daftar argumen terlalu panjang”

Sementara secara teoritis 'cp ' dapat memiliki argumen sebanyak mungkin, ada batas yang telah ditentukan sebelumnya pada jumlah maksimum argumen yang dapat digunakan oleh satu perintah. Ini adalah batas yang ditentukan dalam sistem Linux dan didasarkan pada ukuran tumpukan sistem.

Jadi, jika jumlah file yang sangat tinggi ditentukan dengan wildcard dengan 'cp ', Mis. lebih dari seratus ribu file, itu menimbulkan kesalahan:“Daftar argumen terlalu panjang “.

Misalnya, seperti yang ditunjukkan pada gambar di bawah, folder tersebut berisi 100002 file. Dengan demikian, ini memberikan kesalahan yang disebutkan di atas saat kita menjalankan perintah salin dengan meneruskan semua file dengan wildcard.

$ ls -l | wc -l
$ cp file_* target/

Solusi:Gunakan Perintah 'Temukan' untuk Memperbaiki Kesalahan "Daftar argumen terlalu panjang"

Untuk mengatasi masalah ini, kami menggunakan perintah find , yang pada dasarnya mencari file dalam direktori berdasarkan parameter yang berbeda. Kami menjalankan 'temukan ' di direktori yang sama dengan file yang ingin kita salin.

Kemudian kita menggunakan '-exec' parameter ‘temukan ' yang akan memungkinkan Anda menjalankan perintah apa pun di atas output find.

$ find . -maxdepth 1 -name "<filename_pattern>" -exec cp {} <target_directory> \;

Di sini, argumen pertama, '.' (direktori saat ini) adalah direktori tempat menemukan file. Argumen '-maxdepth 1' hanya mempertimbangkan file dan direktori di direktori saat ini. Tanpa menentukan kedalaman ini, ‘temukan ' perintah akan melihat semua subdirektori secara tidak perlu.

Argumen "-name" dan string setelah itu menentukan ekspresi menggunakan file yang diperlukan yang dapat dicantumkan. Kemudian kita tentukan ‘cp ' perintah setelah argumen '-exec' . Tanda kurung buka, '{ }' adalah placeholder untuk argumen yang akan digunakan dari output find.

$ find . -maxdepth 1 -name "file_*" -exec cp {} target/ \;

Kita dapat melihat bahwa file telah berhasil disalin ke '/target' .

$ cd target/
$ ls | head -10
$ ls -l | wc -l

Demikian pula, jika ada direktori yang akan disalin bersama dengan file, kami menjalankan 'cp ' dengan '-r' tandai pada contoh di bawah ini.

$ find . -maxdepth 1 -name "file_*" -exec cp -r {} target/ \;

Perhatikan bahwa, dalam kasus seperti itu, nama direktori juga harus dapat ditelusuri dengan ‘pola nama file ‘.

Bacaan Terkait :Cara Memindahkan Banyak File di Linux

Kesimpulan

Dalam artikel ini, kita telah melihat cara menyalin sejumlah besar file dari satu direktori ke direktori lain di Linux dan dengan demikian cara mengatasi masalah 'Daftar argumen terlalu panjang ‘.

Jika Anda memiliki umpan balik atau pertanyaan, beri tahu kami di komentar di bawah!


Linux
  1. Cara Meningkatkan Jumlah Batas File Terbuka di Linux

  2. Cara Mengganti Nama File di Linux

  3. Bagaimana cara menggunakan perintah Rsync di linux?

  1. Menyalin file di Linux

  2. Bagaimana cara menyalin folder dengan file ke folder lain di Unix/Linux?

  3. Cara menyalin file dalam jumlah besar dengan cepat antara dua server

  1. Cara menemukan file di Linux

  2. Cara Menyalin File dan Direktori di Linux

  3. Cara Mengekstrak File di Linux