GNU/Linux >> Belajar Linux >  >> Linux

Cara Mengecualikan Ekstensi File Tertentu Saat Menyalin File Secara Rekursif

Seperti yang mungkin sudah Anda ketahui, ‘cp’ adalah program baris perintah di Linux untuk menyalin file dan direktori. Penggunaan sederhana dan paling umum dari 'cp' adalah sebagai berikut:

$ cp file1 file2 file3... fileN target_folder/

Perhatikan bahwa perintah di atas berfungsi untuk file serta 'kosong' folder. Ini tidak berfungsi untuk folder yang memiliki beberapa konten, baik file atau subfolder.

Untuk menyalin folder tersebut, kita dapat menentukan '-r' bendera (rekursif).

$ cp -r folder1/ folder2/ file1 file2 target_folder/

Penyalinan rekursif menyiratkan bahwa seluruh struktur folder di bawah folder, yaitu, subfolder dan file di dalamnya, subfolder di dalam subfolder dan file di dalamnya, dan seterusnya, disalin.

Ini menyalin semua file, dan tidak ada cara di dalam 'cp' perintah untuk mengecualikan beberapa file berdasarkan parameter tertentu. Misalnya, pengguna mungkin ingin menyalin semua file secara rekursif, kecuali file MP3 (audio) di subfolder sampai ke bawah dalam hierarki.

Temukan Semua File Kecuali Ekstensi File Tertentu

Untuk mencapai ini, kami menggunakan perintah find, yang merupakan alat perintah yang digunakan untuk mencari file dan folder di Linux berdasarkan parameter file atau folder:nama file, ekstensi, ukuran, dll.

Demikian pula, ada cara untuk mencari file dengan menentukan file mana yang harus dikecualikan dalam perintah find . Sintaks untuk menemukan file dengan ekstensi tertentu menggunakan find adalah:

$ find <folder_to_search> -name '*.<extension>'

Misalnya, untuk menemukan semua file MP3 secara rekursif di folder saat ini:

$ find . -name "*.mp3"

Sekarang, untuk menemukan semua file dalam folder dan subfolder, kecuali file MP3, gunakan ‘negasi’ operator temukan :

$ find . ! -name "*.mp3"

Kita dapat melihat bahwa sekarang semuanya kecuali file MP3 ditampilkan. Namun, kami hanya ingin menampilkan file, karena output ini nantinya akan dimasukkan ke ‘cp’ . Saat ini, ini menampilkan file dan folder (Misalnya ‘temp1/’ ), yang akan menyebabkan salinan berulang dari file yang sama.

Untuk menghapus folder dari output, cukup gunakan argumen '-type f' . Disini 'f' singkatan dari sebuah file.

$ find . ! -name '*.mp3' -type f

Dengan demikian, kami sekarang hanya memiliki file yang diperoleh secara rekursif di dalam folder 'test' . Sekarang kita dapat melanjutkan untuk menyalurkan output ini ke 'cp' perintah .

Kecualikan Ekstensi File Tertentu Saat Menyalin File Secara Rekursif

Untuk melakukan ini, kami menggunakan 'xargs' perintah untuk membuat 'cp' pertimbangkan output dari 'temukan' sebagai argumennya. Juga, kami menggunakan '-t' flag untuk menentukan direktori target, yang tanpanya program akan menganggap output dari 'find' sebagai direktori target.

$ find <folder_to_search> ! -name '*.<extension>' -type f | xargs cp -t <target_directory>

Perintah sebenarnya.

$ find . ! -name '*.mp3' -type f | xargs cp -t Misc/

Jadi, semua file ditemukan secara rekursif, kecuali “.mp3” file telah disalin ke folder “Lain-lain” .

Kesimpulan

Pada artikel ini, kami mempelajari cara menyalin file secara rekursif di Linux sambil mengecualikan file dengan ekstensi tertentu. Juga, lihat cara menyalin file ekstensi tertentu secara rekursif.

Jika Anda memiliki pertanyaan atau masukan, beri tahu kami di komentar di bawah.


Linux
  1. Bagaimana Cara Menyalin File Secara Rekursif Dengan Ekstensi File??

  2. Bagaimana Menyembunyikan File Dengan Ekstensi Tertentu?

  3. Cara Menemukan Semua File dengan Ukuran File Nol (0) Bytes di Direktori Secara Rekursif

  1. Cara menyalin direktori secara rekursif menggunakan rsync sambil mengecualikan file tertentu

  2. Secara rekursif menemukan file dengan ekstensi tertentu

  3. Bagaimana saya bisa menyalin file secara rekursif dengan ekstensi file, mempertahankan struktur direktori?

  1. Cara Menemukan File Di Linux Di Semua Direktori Secara Rekursif

  2. Cara Mengecualikan Direktori Tertentu Dari Menyalin Di Linux

  3. Bagaimana Cara Menggunakan Inotifywait Untuk Menonton Direktori Untuk Pembuatan File Ekstensi Tertentu?