Saya mencoba untuk menghapus semua file dan subdirektori dalam sebuah direktori. Saya menggunakan rm -r
untuk menghapus semua file, tapi aku ingin menghapus semua file dan subdirektori, termasuk top direktori itu sendiri.
Sebagai contoh, saya memiliki beberapa direktori seperti gambar
. Ini berisi file header.png,
footer.png` dan subdirektori.
Sekarang saya ingin menghapus header.png
, footer.png
dan subdirektori, tapi tidak gambar
.
Bagaimana saya bisa melakukan ini di linux?
Untuk menghapus file yang tersembunyi, anda harus menentukan:
rm -r images/* images/.*
Dengan kerang dan gumpalan mencakup .
dan ..
, hal ini akan menyebabkan error seperti
rm: cannot remove `.' directory `images/.'
rm: cannot remove `..' directory `images/..'
tapi itu akan menghapus file yang tersembunyi.
Pendekatan tanpa errormessage adalah dengan menggunakan cari/menghapus dengan mindepth. Ini adalah gnu-cari.
find images -mindepth 1 -delete
Anda dapat menemukan kekurangan -mindepth
atau delete
predikat, dalam hal ini, anda bisa melakukan:
find images/. ! -name . -prune -exec rm -rf {} +
Untuk menghapus semua file dan direktori(termasuk hidden orang-orang) dalam sebuah direktori, anda dapat mencoba hal berikut:
ls -Ab
untuk mencocokkan semua file/direktoricd dir_name && rm -rf ls -Ab
menemukan
untuk mencocokkan semua file/direktorimenemukan dir_name -mindepth 1 -menghapus
atau, jika anda menemukan
doesn't dukungan hapus
:
menemukan dir_name -mindepth 1 -exec rm -rf {}
rm -rf dir_name && mkdir dir_name
shopt -s dotglob rm -rf dir_name/*
Untuk menghapus semua regular file secara rekursif dalam sebuah direktori, perintah ini (dengan asumsi GNU atau FreeBSD menemukan
) cukup baik:
find . -type f -delete
Yang membuat semua non-regular file seperti symlink (apakah mereka arahkan ke file biasa atau tidak), direktori, fifos, soket, perangkat...
Lihat juga:
find . ! -type d -delete
untuk menghapus file dari jenis apa pun kecuali directory.
Pertanyaan itu kosong direktori = menghapus isi direktori termasuk file yang tersembunyi, namun bukan direktori itu sendiri. Perintah find dengan -mindepth 1 adalah benar-benar cara yang benar untuk pergi, tapi untuk menghindari pesan kesalahan itu harus bergabung dengan -maxdepth 1:
find /path/to/dir -mindepth 1 -maxdepth 1 -exec rm -rf '{}' \;
Saya menggunakan cari
perintah berikut:
Langkah 1: Cari semua file dan menghapus mereka :
find /path/to/directory/ -type f -exec rm {} \;
Contoh:
find /home/user/Desktop/images/ -type f -exec rm {} \;
Langkah 2: Cari semua sub-direktori dan menghapus mereka :
find /path/to/directory/ -type d -exec rm -R {} \;
Anda dapat menghapus direktori dengan menggunakan perintah berikut:
sudo rm -r directoryname1/2/3/*
Ini akan menghapus seluruh direktori setelah 3/*.
Contoh sudo rm -r Popularitas/lagu/*
Ini akan menghapus semua file yang berada dalam Popularitas/song
.
Ini bekerja dengan sempurna untuk saya, diuji beberapa variasi bekerja setiap waktu.
Dari direktori yang menyimpan direktori images.
rm -frd ./images/*
sebelumnya:
images/
|_ header.png
|_ footer.png
|_ subdir/
setelah:
images/
Untuk menghapus semua file dan subdirektori dalam direktori saat ini, *termasuk yang tersembunyi, tanpa kesalahanpesan*:
rm -rf .[^.] .??* *
Atau, dari direktori induk:
rm -rf images/.[^.] images/.??* images/*