Karena ini tinggi di pencarian google, jawaban paling sederhana adalah:
rm $directoryPath/*
di mana $directoryPath adalah direktori yang ingin Anda kosongkan. Kredit harus masuk ke cbm3384 (yang karena alasan tertentu mendapat suara negatif untuk jawaban ini, mengapa?)
Jika Anda tidak ingin mengonfirmasi:
rm -f $directoryPath/*
Kalau tidak percaya coba man rm
atau
mkdir -p 1/2/3; echo 'hello1' > 1/hello1.txt; echo 'hello2' > 1/2/hello2.txt;echo 'hello3' > 1/2/3/hello3.txt
rm 1/2/*
Di atas membuat struktur direktori, yang memiliki 'helloX.txt' di setiap folder (X adalah level direktori). rm 1/2/*
menghapus hello2.txt
dan membiarkan struktur lainnya tetap utuh.
Juga rm */*/*
hanya menghapus hello2.txt
. Ini adalah satu-satunya yang cocok dengan polanya.
Hanya contoh Makefile yang membersihkan direktori cakephp tmp dan membiarkan struktur direktori tetap utuh:
clean:
-rm -f tmp/*
-rm -f tmp/*/*
-rm -f tmp/*/*/*
-rm -f tmp/*/*/*/*
Minus di depan rm
berarti "jangan berhenti pada kesalahan" (direktori yang tidak dihapus mengembalikan kesalahan). Jika Anda ingin beberapa level disimpan, hapus saja baris itu, mis. baris rm kedua menghapus log.
Beri tahu saya jika Anda memiliki sistem yang melakukan hal lain (BSD?).
EDIT: Saya menguji ini di ubuntu 12.04, osx lion dan shell sourceforge.net. Semua berperilaku seperti penjelasan di atas.
find PATH -maxdepth 1 -type f -delete
TAPI ini tidak akan meminta Anda untuk konfirmasi atau menampilkan apa yang baru saja dihapus. Oleh karena itu sebaiknya jalankan tanpa tindakan -delete terlebih dahulu dan periksa apakah itu file yang benar.
Anda dapat menggunakan find
dengan -type f
hanya untuk file dan -maxdepth 1
jadi find
tidak akan mencari file di sub-direktori /path/to/directory
. rm -i
akan meminta Anda pada setiap penghapusan sehingga Anda dapat mengonfirmasi atau menolak penghapusan. Jika Anda tidak peduli dimintai konfirmasi untuk setiap penghapusan, ubah ke rm -fv
(-f
untuk kekuatan yang menghapus). -v
flag membuatnya sehingga dengan setiap penghapusan, sebuah pesan dicetak mengatakan file apa yang baru saja dihapus.
find /path/to/directory -maxdepth 1 -type f -exec rm -iv {} \;
Ini harus memenuhi kriteria:
BUKAN direktori
BUKAN subdirektori
BUKAN file di subdirektori ini.