Saya mencoba untuk menghapus semua file dan subdirektori dalam direktori. Saya dulu rm -r
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 subdirektori.
Sekarang saya ingin menghapus header.png
, footer.png
dan subdirektori, tetapi tidak images
.
Bagaimana saya bisa melakukan ini di linux?
rm -Rf
semua file dan direktori di sana.Jawaban:
Jika direktori tingkat atas Anda dipanggil
images
, jalankanrm -r images/*
. Ini menggunakan shell glob operator*
untuk berjalanrm -r
di setiap file atau direktori di dalamnyaimages
.sumber
Untuk menghapus file tersembunyi, Anda harus menentukan:
Dengan kerang yang memiliki gumpalan
.
dan..
, ini akan menyebabkan kesalahan sepertitetapi itu akan menghapus file yang tersembunyi.
Pendekatan tanpa kesalahan adalah menggunakan find / delete dengan mindepth. Ini gnu-find.
Temuan Anda mungkin kurang
-mindepth
atau-delete
predikatnya, dalam hal ini, Anda dapat melakukan:sumber
rm .*
tidak menghapus.
atau..
dan belum sejak tahun 1994 setidaknya untuk utilitas GNU dan kemungkinan sejak akhir 70-an untuk UNIX . Sangat tidak mungkin Anda akan menemukan sistem tempatrm .*
melintasi sistem berkas ke atas di luar museum.Untuk menghapus semua file dan direktori (termasuk yang tersembunyi ) di direktori, Anda dapat mencoba yang berikut:
gunakan
ls -Ab
untuk mencocokkan semua file / direktorigunakan
find
untuk mencocokkan semua file / direktoriatau, jika Anda
find
tidak mendukung-delete
:hapus folder, lalu buat kembali
dalam bash,
sumber
rm -rf *
tidak aman jika Anda tidak memiliki pengetahuan tentang file dalam direktori, karena file yang dimulai dengan-
(tanda hubung) akan ditafsirkan sebagairm
flag ...rm -rf ./* ./.*
Untuk menghapus semua file biasa secara rekursif di dalam direktori, perintah ini (dengan asumsi GNU atau FreeBSD
find
) cukup baik:Yang meninggalkan semua file tidak biasa seperti symlink (apakah mereka menunjuk ke file biasa atau tidak), direktori, fifos, soket, perangkat ...
Lihat juga:
untuk menghapus file jenis apa pun kecuali direktori .
sumber
Coba versi ini:
sumber
Saya menggunakan
find
perintah di sini:Langkah 1: Temukan semua file dan hapus:
Contoh:
Langkah 2: Temukan semua sub-direktori dan hapus mereka:
sumber
find /path/to/directory/ -type d
termasuk.
sehingga akan menghapus direktori itu sendiri. Anda juga harus menggunakan-mindepth
sakelar seperti yang dikatakan orang lain.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 dijalankan, tetapi untuk menghindari pesan kesalahan harus digabungkan dengan -maxdepth 1:
sumber
Sintaks rm adalah:
Jadi, Anda harus menyatakan jalur yang sesuai secara eksplisit, mis
sumber
Anda dapat menghapus direktori menggunakan perintah berikut:
Ini akan menghapus seluruh direktori setelah 3 / *.
Contoh sudo rm -r Unduh / lagu / *
Ini akan menghapus semua file yang ada di dalamnya
Downloads/song
.sumber
Ini berfungsi dengan baik bagi saya, menguji beberapa variasi bekerja setiap kali.
Dari direktori yang menyimpan direktori gambar.
sebelum:
setelah:
sumber
mkdir images/.somedir
;touch images/.somefile
)Untuk menghapus semua file dan subdirektori di direktori saat ini, termasuk yang tersembunyi, tanpa pesan kesalahan :
Atau, dari direktori induk:
Dari https://serverfault.com/a/47940/269538 .
sumber
Pilihan lain:
sumber: https://askubuntu.com/a/552834/56648
sumber
Hapus folder "test" dan semua file di dalamnya:
Hapus semua file di dalam tetapi tetap folder "test":
sumber
cd ke folder lalu jalankan perintah berikut:
sumber