3 cara untuk memadam semua fail dalam direktori kecuali satu atau beberapa fail dengan sambungan
- 4230
- 356
- Dana Hammes
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:
*
- Memadankan sifar atau lebih aksara?
- Memadankan watak tunggal[seq]
- sepadan dengan watak di seq[!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:
*(senarai corak)
- Memadankan sifar atau lebih banyak kejadian corak yang ditentukan?(senarai corak)
- sepadan dengan sifar atau satu kejadian corak yang ditentukan- +(senarai corak) - Memadankan satu atau lebih kejadian corak yang ditentukan
@(senarai corak)
- Memadankan salah satu corak yang ditentukan!(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'-deleteCari 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 -vKeluarkan 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 '\) -deleteKeluarkan 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 GlobignorePadam 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.
- « Photorec - Memulihkan fail yang dipadam atau hilang di Linux
- Tecmint.Com - Artikel Terbaik Terbaik pada 2016 »