3 cara untuk memadam semua fail dalam direktori kecuali satu atau beberapa fail dengan sambungan

3 cara untuk memadam semua fail dalam direktori kecuali satu atau beberapa fail dengan sambungan

Kadang -kadang anda masuk ke dalam situasi di mana anda perlu memadam semua fail dalam direktori atau hanya membersihkan direktori dengan mengeluarkan semua fail kecuali fail jenis tertentu (berakhir dengan lanjutan tertentu).

Dalam artikel ini, kami akan menunjukkan kepada anda cara memadam fail dalam direktori kecuali sambungan atau jenis fail tertentu menggunakan rm, cari dan Globignore Perintah.

Sebelum kita bergerak lebih jauh, mari kita mulakan secara ringkas dengan melihat satu konsep penting dalam Linux - Pencocokan Corak Nama, yang akan membolehkan kita menangani isu kita di tangan.

Cadangan Baca: Gunakan Cari Perintah untuk Mencari Pelbagai Nama/Sambungan di Linux

Di Linux, corak shell adalah rentetan yang terdiri daripada watak -watak khas berikut, yang disebut sebagai kad liar atau metacharacters:

  1. * - Memadankan sifar atau lebih aksara
  2. ? - Memadankan watak tunggal
  3. [seq] - sepadan dengan watak di seq
  4. [!seq] - sepadan dengan watak yang tidak di seq

Terdapat tiga kemungkinan kaedah yang akan kita pelajari di sini, dan ini termasuk:

Padam fail menggunakan operator yang sepadan dengan corak lanjutan

Operator pencocokan corak yang berlainan yang berbeza disenaraikan di bawah, di mana senarai corak adalah senarai yang mengandungi satu atau lebih nama fail, dipisahkan menggunakan | watak:

  1. *(senarai corak) - Memadankan sifar atau lebih banyak kejadian corak yang ditentukan
  2. ?(senarai corak) - sepadan dengan sifar atau satu kejadian corak yang ditentukan
  3. +(senarai corak) - Memadankan satu atau lebih kejadian corak yang ditentukan
  4. @(senarai corak) - Memadankan salah satu corak yang ditentukan
  5. !(senarai corak) - sepadan dengan apa sahaja kecuali salah satu corak yang diberikan

Untuk menggunakannya, membolehkan extglob Pilihan shell seperti berikut:

# shopt -s extglob 

1. Untuk memadam semua fail dalam direktori kecuali nama fail, taipkan arahan di bawah:

$ rm -v !("nama fail") 
Padam semua fail kecuali satu fail di Linux

2. Untuk memadam semua fail dengan pengecualian FileName1 dan FileName2:

$ rm -v !("FileName1" | "Filename2") 
Padam semua fail kecuali beberapa fail di Linux

3. Contoh di bawah menunjukkan cara mengeluarkan semua fail selain daripada semua .zip Fail secara interaktif:

$ rm -i !(*.zip) 
Padam semua fail kecuali fail zip di Linux

4. Seterusnya, anda boleh memadam semua fail dalam direktori selain dari semua .zip dan .odt Fail seperti berikut, semasa memaparkan apa yang sedang dilakukan:

$ rm -v !(*.zip |*.odt) 
Padamkan semua fail kecuali sambungan fail tertentu

Sebaik sahaja anda mempunyai semua arahan yang diperlukan, matikan extglob Pilihan shell seperti begitu:

$ shopt -u extglob 

Padam fail menggunakan arahan cari linux

Di bawah kaedah ini, kita boleh menggunakan perintah mencari secara eksklusif dengan pilihan yang sesuai atau bersempena dengan Xargs Perintah dengan menggunakan saluran paip seperti dalam bentuk di bawah:

$ cari / direktori / -type f -not -name 'corak' -delete $ cari / direktori / -type f -not -name 'corak' -print0 | xargs -0 -i  rm  $ cari / direktori / -type f -not -name 'corak' -print0 | xargs -0 -i  rm [options]  

5. Perintah berikut akan memadam semua fail selain dari .Gz fail dalam direktori semasa:

$ cari . -Taip f -not -name '*.gz'-delete 
Cari Perintah - Keluarkan semua fail kecuali .fail gz

6. Menggunakan a saluran paip dan Xargs, Anda boleh mengubah suai kes di atas seperti berikut:

$ cari . -taip f -not -name '*gz' -print0 | xargs -0 -i  rm -v  
Keluarkan fail menggunakan arahan Cari dan Xargs

7. Mari kita lihat satu contoh tambahan, arahan di bawah akan menghapuskan semua fail yang tidak termasuk .Gz, .odt, dan .JPG fail dalam direktori semasa:

$ cari . -taip f -not \ ( -name '*gz' -or -name '*odt' -or -name '*.jpg '\) -delete 
Keluarkan semua fail kecuali sambungan fail

Padam fail menggunakan pembolehubah Bash Globignore

Pendekatan terakhir ini, hanya berfungsi dengan Bash. Di sini, The Globignore Pembolehubah menyimpan senarai corak yang dipisahkan kolon (nama fail) yang diabaikan oleh pengembangan nama laluan.

Cadangan Baca: Berguna 12 contoh praktikal mengenai arahan grep di linux

Untuk menggunakan kaedah ini, masuk ke direktori yang anda ingin membersihkan, kemudian tetapkan Globignore Pembolehubah seperti berikut:

$ cd ujian $ globignore =*.ODT:*.ISO:*.txt 

Dalam hal ini, semua fail selain .odt, .ISO, dan .txt fail dengan dikeluarkan dari direktori semasa.

Sekarang jalankan arahan untuk membersihkan direktori:

$ rm -v * 

Selepas itu, matikan Globignore berubah -ubah:

$ unset Globignore 
Padam fail menggunakan pembolehubah Bash Globignore

Catatan: Untuk memahami makna bendera yang digunakan dalam perintah di atas, rujuk halaman lelaki setiap arahan yang telah kami gunakan dalam pelbagai ilustrasi.

Itu sahaja! Sekiranya anda mempunyai teknik baris arahan lain untuk tujuan yang sama, jangan lupa untuk berkongsi dengan kami melalui bahagian maklum balas kami di bawah.