Yang paling dekat saya dapatkan adalah
# rm /path/to/directory/*.*
tetapi itu tidak berfungsi untuk file yang tidak memiliki ekstensi ...
Yang paling dekat saya dapatkan adalah
# rm /path/to/directory/*.*
tetapi itu tidak berfungsi untuk file yang tidak memiliki ekstensi ...
Jawaban:
Linux tidak menggunakan ekstensi. Terserah pembuat file untuk memutuskan apakah dia ingin nama tersebut memiliki ekstensi. Linux melihat byte pertama untuk mencari tahu jenis file yang digunakan.
Untuk menghapus semua yang ada dalam direktori gunakan:
rm /path/to/directory/*
Anda dapat menggunakan -r
opsi, misalnya:
rm -r /path/to/directory/*
juga menghapus setiap sub direktori (beserta semua kontennya) di dalam direktori tempat Anda menghapus konten. Kalau tidak, itu akan menampilkan kesalahan memberitahu Anda itu tidak menghapus direktori.
all files
;) *.*
berarti semua file yang mengandung suatu .
tempat dalam nama
*a*
berarti nol atau lebih karakter, diikuti oleh a
diikuti oleh nol atau lebih karakter. Ini akan cocok dengan nama file happy
, apple
, a
atau la
.
Untuk menghapus folder dengan semua isinya ( termasuk semua folder interior ):
rm -rf /path/to/directory
Untuk menghapus semua konten folder ( termasuk semua folder interior ) tetapi tidak folder itu sendiri:
rm -rf /path/to/directory/*
atau
rm -rf /path/to/directory/{*,.*}
jika Anda ingin memastikan bahwa file / direktori tersembunyi juga dihapus.
Untuk menghapus semua "file" dari dalam folder ( tidak menghapus folder interior ):
rm -f /path/to/directory/{*,.*}
Peringatan : jika Anda memiliki spasi di jalur Anda, pastikan untuk selalu menggunakan tanda kutip.
rm -rf /path/to the/directory/*
setara dengan 2 rm -rf
panggilan terpisah :
rm -rf /path/to
rm -rf the/directory/*
Untuk menghindari masalah ini, Anda dapat menggunakan '
tanda kutip tunggal '
( tidak memperluas variabel shell) atau "
tanda kutip ganda "
( memperluas variabel shell):
rm -rf "/path/to the/directory/"*
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.rm -rf /path/to/directory/*
tidak menghapus file yang disembunyikan dalam folder misalnya .htaccess
. Mungkin rm -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, jalankan shopt -s dotglob
sebelum berjalan rm -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 perintah rm -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:
rm -rf /path/to/directory/{*,.*}
./
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
find /path/to/directory -type f -print0| xargs -0 rm
atau
find /path/to/directory -type f -exec rm '{}' \;
Anda dapat melakukan banyak dengan find
, keuntungannya adalah Anda dapat membuat daftar apa yang ditemukan tanpa menyalurkannya rm
sehingga Anda dapat melihat apa yang akan dihapus sebelum Anda mulai.
GNU find
sebagai -delete
predikat. Jika Anda masih ingin menggunakan -exec
, mengganti \;
dengan +
akan mengumpulkan rm
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
rm -rf dir_name && mkdir dir_name
menggunakan find
find dir_name -mindepth 1 -delete
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
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 ...
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).
find "${DIR}" -xdev -mindepth 1 -printf "%d\t%y\t%p\0" | sort -z -r -n | cut -z -f3- | xargs -0 -r -- rm -d --
Perhatikan bahwa saya menambahkan -xdev
argumen untuk mencegah turun ke mount (seperti /proc
dll.).
-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 menyisipkan
-not \( -path "${DIR}/subdir" -prune \)
sebelum -mindepth
argumen untuk mengecualikan subdir
agar kontennya dihapus.
-depth
bendera find
untuk itu.
-delete
denganfind
? -delete
adalah kedalaman-pertama. Anda sudah mengasumsikan non-POSIX find
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 perintah rm *.*
seperti di DOS jika Anda ingat.
shopt -s dotglob
sebelum menjalankanrm (...)