GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menghapus semua file dalam direktori kecuali beberapa?

Ke rm semua kecuali u,p di bash cukup ketik:

rm !(u|p)

Ini membutuhkan opsi berikut untuk disetel:

shopt -s extglob

Lihat selengkapnya:glob - Wiki milik Greg


Apa yang saya lakukan dalam kasus tersebut adalah mengetik

rm *

Lalu saya tekan Ctrl +X ,* untuk memperluas * ke dalam semua nama file yang terlihat.

Kemudian saya dapat menghapus dua file yang ingin saya simpan dari daftar dan akhirnya menjalankan baris perintah.


Anda dapat menggunakan find

find . ! -name u ! -name p -maxdepth 1 -type f -delete
  • ! meniadakan ekspresi berikutnya
  • -name menentukan nama file
  • -maxdepth 1 akan membuat proses pencarian direktori yang ditentukan saja (find secara default melintasi direktori)
  • -type f hanya akan memproses file (dan bukan misalnya direktori)
  • -delete akan menghapus file

Anda kemudian dapat menyetel kondisi dengan melihat halaman manual find

Perbarui

  • Perlu diingat bahwa urutan elemen ekspresi adalah penting (lihat dokumentasi)
  • Uji perintah Anda terlebih dahulu dengan menggunakan -print bukannya -delete

    find . ! -name u ! -name p -maxdepth 1 -type f -print
    

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

  2. Hapus Semua File Kecuali Di Subdirektori Tertentu Dengan Temukan?

  3. Gunakan Temukan Untuk Menemukan Direktori Tertentu Dan Hapus Semua File Di dalamnya Kecuali Satu Direktori?

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

  2. Shell - Bagaimana menemukan direktori dari beberapa perintah?

  3. Bagaimana cara menghitung jumlah file di setiap direktori?

  1. 3 Cara Menghapus Semua File di Direktori Kecuali Satu atau Beberapa File dengan Ekstensi

  2. Hapus File Dan Direktori Dengan Nama Mereka. Tidak ada berkas atau direktori seperti itu?

  3. Hapus file yang cocok di semua subdirektori