it-swarm-id.com

Bagaimana cara menghapus semua file dalam direktori?

Saya mencoba untuk menghapus semua file dan subdirektori dalam direktori. Saya menggunakan rm -r untuk menghapus semua file, tetapi saya ingin menghapus semua file dan subdirektori, tidak termasuk direktori teratas itu sendiri.

Sebagai contoh, saya memiliki direktori teratas seperti images. Ini berisi file-file header.png, footer.png dan sebuah subdirektori.

Sekarang saya ingin menghapus header.png, footer.png dan subdirektori, tetapi bukan images.

Bagaimana saya bisa melakukan ini di linux?

78
poorani

Jika direktori tingkat atas Anda disebut images, maka jalankan rm -r images/*. Ini menggunakan operator Shell glob * untuk berlari rm -r pada setiap file atau direktori dalam images.

63
Jordan Lewis

Untuk menghapus file yang tersembunyi, Anda harus menentukan:

rm -r images/* images/.*

Dengan kerang yang gumpalannya termasuk . dan .., ini akan menyebabkan kesalahan seperti

rm: cannot remove `.' directory `images/.'
rm: cannot remove `..' directory `images/..'

tetapi itu akan menghapus file yang tersembunyi.

Pendekatan tanpa kesalahan adalah menggunakan find/delete dengan mindepth. Ini gnu-find.

find images -mindepth 1 -delete

Temuan Anda mungkin kekurangan -mindepth atau -delete predikat, dalam hal ini, Anda dapat melakukan:

find images/. ! -name . -Prune -exec rm -rf {} +
54
user unknown

Untuk menghapus semua file dan direktori (termasuk tersembunyi yang) dalam direktori, Anda dapat mencoba yang berikut:

  • gunakan ls -Ab untuk mencocokkan semua file/direktori

    cd dir_name && rm -rf `ls -Ab`
    
  • gunakan find untuk mencocokkan semua file/direktori

    find dir_name -mindepth 1 -delete
    

    atau, jika find Anda tidak mendukung -delete:

    find dir_name -mindepth 1 -exec rm -rf {}
    
  • hapus folder, lalu buat kembali

    rm -rf dir_name && mkdir dir_name
    
  • di bash,

    shopt -s dotglob  
    rm -rf dir_name/*
    
21
zeekvfu

Untuk menghapus semua biasa file secara rekursif di dalam direktori, perintah ini (dengan asumsi GNU atau FreeBSD find) cukup baik:

find . -type f -delete

Yang meninggalkan semua file tidak biasa seperti symlink (apakah mereka menunjuk ke file biasa atau tidak), direktori, fifos, soket, perangkat ...

Lihat juga:

find . ! -type d -delete

untuk menghapus file jenis apa pun kecuali direktori.

11
amit singh

Coba versi ini:

 rm -r test/*
6
demas

Saya menggunakan perintah find di sini:

Langkah 1: Temukan semua file dan hapus mereka:

find /path/to/directory/ -type f -exec rm {} \;

Contoh:

find /home/user/Desktop/images/ -type f -exec rm {} \;

Langkah 2: Temukan semua sub-direktori dan hapus mereka:

find /path/to/directory/ -type d -exec rm -R {} \;
3
Mandar Shinde

Pertanyaannya adalah mengosongkan direktori = menghapus isi direktori termasuk file tersembunyi, tetapi bukan direktori itu sendiri. Perintah find dengan -mindepth 1 sebenarnya adalah cara yang benar untuk pergi, tetapi untuk menghindari pesan kesalahan itu harus bergabung dengan -maxdepth 1:

find /path/to/dir -mindepth 1 -maxdepth 1 -exec rm -rf '{}' \;
3
Maddes

sintaks rm adalah:

rm [OPTION]... FILE...

Jadi, Anda harus menyatakan jalur yang sesuai secara eksplisit, mis.

rm -r sub_dir/
0
Zaur Nasibov

Anda dapat menghapus direktori menggunakan perintah berikut:

Sudo rm -r directoryname1/2/3/*

Ini akan menghapus seluruh direktori setelah 3/*.

Contoh Sudo rm -r Unduh/lagu/*

Ini akan menghapus semua file yang ada dalam Downloads/song.

0

Ini berfungsi dengan baik bagi saya, menguji beberapa variasi bekerja setiap kali.

Dari direktori yang menyimpan direktori gambar.

rm -frd ./images/*

sebelum:

images/
    |_ header.png
    |_ footer.png
    |_ subdir/

setelah:

images/
0
deb-linux-user

Untuk menghapus semua file dan subdirektori dalam direktori saat ini, termasuk yang tersembunyi, tanpa pesan kesalahan :

rm -rf .[^.] .??* *

Atau, dari direktori induk:

rm -rf images/.[^.] images/.??* images/*

Dari https://serverfault.com/a/47940/269538 .

0
this

Pilihan lain:

$ rm -rf /path/to/directory/{*,.*}

sumber: https://askubuntu.com/a/552834/56648

0
Eyal Levin