3 cara untuk menghapus semua file dalam direktori kecuali satu atau sedikit file dengan ekstensi
- 4272
- 335
- Ian Parker
Terkadang Anda masuk ke dalam situasi di mana Anda perlu menghapus semua file dalam direktori atau cukup membersihkan direktori dengan menghapus semua file kecuali file dari jenis yang diberikan (diakhiri dengan ekstensi tertentu).
Di artikel ini, kami akan menunjukkan cara menghapus file di direktori kecuali ekstensi file tertentu atau jenis menggunakan rm, menemukan Dan Globignore perintah.
Sebelum kita bergerak lebih jauh, mari kita mulai dengan melihat secara singkat satu konsep penting di Linux - Pencocokan Pola Nama File, yang akan memungkinkan kita untuk menangani masalah kita.
Disarankan Baca: Gunakan perintah temukan untuk mencari beberapa nama file/ekstensi di linux
Di Linux, pola shell adalah string yang terdiri dari karakter khusus berikut, yang disebut sebagai kartu wildcars atau Metacharacters:
*
- cocok dengan nol atau lebih karakter?
- cocok dengan karakter tunggal[SEQ]
- cocok dengan karakter apa pun di SEQ[!SEQ]
- cocok dengan karakter apa pun yang tidak ada di seq
Ada tiga metode yang mungkin yang akan kami jelajahi di sini, dan ini termasuk:
Hapus file menggunakan operator pencocokan pola yang diperluas
Operator pencocokan pola yang berbeda tercantum di bawah ini, di mana daftar pola adalah daftar yang berisi satu atau lebih nama file, terpisah menggunakan |
karakter:
*(daftar pola)
- cocok dengan nol atau lebih kejadian dari pola yang ditentukan?(daftar pola)
- cocok dengan nol atau satu kemunculan pola yang ditentukan- +(daftar pola) - cocok dengan satu atau lebih kejadian dari pola yang ditentukan
@(daftar pola)
- cocok dengan salah satu pola yang ditentukan!(daftar pola)
- cocok dengan apapun kecuali salah satu pola yang diberikan
Untuk menggunakannya, aktifkan Extglob Opsi shell sebagai berikut:
# shopt -s extglob
1. Untuk menghapus semua file di direktori kecuali nama file, ketik perintah di bawah ini:
$ rm -v !("nama file")Hapus semua file kecuali satu file di linux
2. Untuk menghapus semua file dengan pengecualian nama file1 Dan FileName2:
$ rm -v !("FileName1" | "FileName2")Hapus semua file kecuali beberapa file di linux
3. Contoh di bawah ini menunjukkan cara menghapus semua file selain dari semua .ritsleting
file secara interaktif:
$ rm -i !(*.ritsleting)Hapus semua file kecuali file zip di linux
4. Selanjutnya, Anda dapat menghapus semua file dalam direktori selain dari semua .ritsleting
Dan .odt
file sebagai berikut, saat menampilkan apa yang sedang dilakukan:
$ rm -v !(*.Zip |*.ODT)Hapus semua file kecuali ekstensi file tertentu
Setelah Anda memiliki semua perintah yang diperlukan, matikan Extglob Opsi shell seperti begitu:
$ shopt -u extglob
Hapus file menggunakan perintah find linux
Di bawah metode ini, kita dapat menggunakan perintah temukan secara eksklusif dengan opsi yang sesuai atau bersamaan dengan xargs Perintah dengan menggunakan pipa seperti pada formulir di bawah ini:
$ find / directory / -type f -not -name 'pola' -delete $ find / directory / -type f -not -name 'pola' -print0 | xargs -0 -i rm $ find / directory / -type f -not -name 'pola' -print0 | xargs -0 -i rm [opsi]
5. Perintah berikut akan menghapus semua file terpisah dari .GZ
File di direktori saat ini:
$ find . -ketik f -not -name '*.GZ'-DELETEPerintah Temukan - Hapus Semua File Kecuali .file GZ
6. Menggunakan sebuah pipa Dan xargs, Anda dapat memodifikasi kasing di atas sebagai berikut:
$ find . -ketik f -not -name '*gz' -print0 | xargs -0 -i rm -vHapus file menggunakan perintah temukan dan xargs
7. Mari kita lihat satu contoh tambahan, perintah di bawah ini akan menghapus semua file tidak termasuk .GZ
, .odt
, Dan .jpg
File di direktori saat ini:
$ find . -ketik f -not \ ( -name '*gz' -or -name '*odt' -or -name '*.jpg '\) -deleteHapus semua file kecuali ekstensi file
Hapus file menggunakan variabel bash globignore
Namun pendekatan terakhir ini, hanya bekerja dengan bash. Di sini, Globignore Variabel menyimpan daftar pola yang dipisahkan usus (nama file) yang akan diabaikan dengan ekspansi pathname.
Disarankan Baca: Berguna 12 Contoh Praktis tentang Perintah GREP di Linux
Untuk menggunakan metode ini, pindah ke direktori yang ingin Anda bersihkan, lalu atur Globignore variabel sebagai berikut:
$ cd test $ globignore =*.ODT:*.ISO:*.txt
Dalam hal ini, semua file selain .odt
, .iso
, Dan .txt
file dengan dihapus dari direktori saat ini.
Sekarang jalankan perintah untuk membersihkan direktori:
$ rm -v *
Setelah itu, matikan Globignore variabel:
$ Globignore yang tidak diaturHapus file menggunakan variabel bash globignore
Catatan: Untuk memahami arti bendera yang digunakan dalam perintah di atas, lihat halaman manusia dari setiap perintah yang telah kita gunakan dalam berbagai ilustrasi.
Itu saja! Jika Anda memiliki teknik baris perintah lainnya dalam pikiran untuk tujuan yang sama, jangan lupa untuk berbagi dengan kami melalui bagian umpan balik kami di bawah ini.
- « Photorec - Pulihkan file yang dihapus atau hilang di Linux
- Tecmint.com - Artikel teratas yang paling banyak dilihat tahun 2016 »