Yang paling dekat saya dapatkan adalah
# rm /path/to/directory/*.*
tetapi itu tidak berfungsi untuk file yang tidak memiliki ekstensi ...
command-line
rm
pengguna784637
sumber
sumber
shopt -s dotglob
sebelum menjalankanrm (...)
all files
;)*.*
berarti semua file yang mengandung suatu.
tempat dalam nama*a*
berarti nol atau lebih karakter, diikuti oleha
diikuti oleh nol atau lebih karakter. Ini akan cocok dengan nama filehappy
,apple
,a
ataula
.Untuk menghapus folder dengan semua isinya ( termasuk semua folder interior ):
Untuk menghapus semua konten folder ( termasuk semua folder interior ) tetapi tidak folder itu sendiri:
atau
jika Anda ingin memastikan bahwa file / direktori tersembunyi juga dihapus.
Untuk menghapus semua "file" dari dalam folder ( tidak menghapus folder interior ):
Peringatan : jika Anda memiliki spasi di jalur Anda, pastikan untuk selalu menggunakan tanda kutip.
setara dengan 2
rm -rf
panggilan terpisah :Untuk menghindari masalah ini, Anda dapat menggunakan
'
tanda kutip tunggal'
( tidak memperluas variabel shell) atau"
tanda kutip ganda"
( memperluas variabel shell):Dimana:
rm
- singkatan dari " remove "-f
- singkatan dari " force " yang bermanfaat ketika Anda tidak ingin ditanya / diminta jika Anda ingin menghapus arsip, misalnya.-r
- singkatan dari " rekursif " yang berarti Anda ingin masuk secara rekursif ke setiap folder dan menghapus semuanya.sumber
rm -rf /path/to/directory/*
tidak menghapus file yang disembunyikan dalam folder misalnya.htaccess
. Mungkinrm -rf /path/to/directory/.
? Belum mencobanya.rm -rf /path/to/directory/.*
hanya menghapus file yang tersembunyi di direktori yang ditentukan. Melihat komentar @ danjjl pada jawaban @ Rinzwind, untuk juga menghapus file tersembunyi, jalankanshopt -s dotglob
sebelum berjalanrm -rf /path/to/directory/*
.rm -rf /path/to/directory/.*
pada sistem saya menyebabkan penghapusan item di/path/to
. Untungnya, saya baru saja mencadangkan seluruh data saya ke disk terpisah. Tidak perlu dikatakan, JANGAN mengeluarkan perintahrm -rf /path/to/directory/.*
kecuali Anda telah membuat cadangan seluruh komputer Anda ke lokasi yang terpisah / aman!Untuk menghapus semua file dalam direktori (termasuk file dan subdirektori tersembunyi) jalankan:
sumber
./
dan../
, tetapi masih akan menghapus file yang tersembunyi.rm -r $(pwd)/{*,.*}
Jika Anda ingin menghapus hanya file di / path / ke / direktori yang dapat Anda lakukan
atau
Anda dapat melakukan banyak dengan
find
, keuntungannya adalah Anda dapat membuat daftar apa yang ditemukan tanpa menyalurkannyarm
sehingga Anda dapat melihat apa yang akan dihapus sebelum Anda mulai.sumber
GNU find
sebagai-delete
predikat. Jika Anda masih ingin menggunakan-exec
, mengganti\;
dengan+
akan mengumpulkanrm
panggilan bersama, meningkatkan efisiensi.Untuk menghapus semua file dan direktori (termasuk yang tersembunyi ) dalam direktori, Anda dapat mencoba yang berikut:
hapus folder, lalu buat kembali
menggunakan
find
Di sini kita tentukan
-mindepth 1
untuk mengecualikan dir_name direktori itu sendiri.Lihatlah tautan berikut:
https://unix.stackexchange.com/questions/12593/how-to-remove-all-the-files-in-a-ddirectory
sumber
Jika Anda juga ingin menghapus semua subdirektori dan direktori itu sendiri, Anda dapat menggunakannya
rm -rf /path/to/directory
. Tetapi selalu periksa ulang baris Anda sebelum menekan kembali,rm -rf
dapat menyebabkan banyak havock juga, misalnya jika Anda secara tidak sengaja memasukkan spasi setelah slash pertama sambil memiliki izin pengguna super ...sumber
Karena pertanyaan ini selalu ada di puncak Google ketika saya mencari sendiri:
Jawaban lain menderita berbagai masalah:
Beberapa dari mereka termasuk
.
dan..
yang berisik, membingungkan, dan menjengkelkan.Beberapa dari mereka lupa file tersembunyi (file diawali dengan titik).
Mereka tidak menghapus dalam urutan yang benar (terdalam-pertama) untuk memungkinkan penghapusan direktori.
Mereka turun ke sistem file lain (terpasang), yang sering tidak diinginkan.
Mereka sulit untuk diperluas dengan benar dengan parameter tambahan (lebih dari itu di bawah).
Jadi, untuk menghapus secara berulang semua file DAN folder dalam direktori, lakukan ini:
Perhatikan bahwa saya menambahkan
-xdev
argumen untuk mencegah turun ke mount (seperti/proc
dll.).Mengapa tidak
-depth
atau-delete
?Meskipun orang-orang terus-menerus menurunkan saya untuk ini, metode-metode itu memiliki kelemahan: sepertinya mereka tidak cukup dapat diperluas untuk membuat
-prune
subdirektori (tanpa menimbulkan lebih banyak masalah). Berbeda dengan metode ini, Anda bisa menyisipkansebelum
-mindepth
argumen untuk mengecualikansubdir
agar kontennya dihapus.sumber
-depth
benderafind
untuk itu.-delete
denganfind
?-delete
adalah kedalaman-pertama. Anda sudah mengasumsikan non-POSIXfind
dengan-printf
, jadi Anda sebaiknya menggunakan-delete
atau-depth -print0 | xargs -0 rm
-not \( -path "$DIR/subdir" \)
... tetapi milik saya tidak? Mengapa?Anda dapat
cd
masuk ke direktori dan kemudian menjalankan perintahrm *.*
seperti di DOS jika Anda ingat.sumber
Untuk menghapus direktori saat ini, Anda dapat menggunakan misalnya
rm -d ./*
-d memberitahu untuk menghapus direktori juga.
sumber