Pertanyaan Apa perbedaan antara ini: sudo find / usr / local / mysql / data -type f -exec rm {} ';'


Apa bedanya ini:

sudo find /usr/local/mysql/data -type f -exec rm {} ';'

dan ini:

sudo rm -rf /usr/local/mysql/data

2
2018-06-04 15:48


asal




Jawaban:


sudo find /usr/local/mysql/data -type f -exec rm {} ';'

sudo akan membuatnya berjalan sebagai root, lalu Anda gunakan find -type f untuk mendapatkan semua file (hanya file) di /usr/local/mysql/data 

itu -exec rm{} akan dipanggil untuk setiap item yang ditemukan dan akan menghapus file.

Jadi ini akan menghapus file secara rekursif tetapi itu akan BUKAN hapus direktori apa pun. Juga bukan itu rm perintah digunakan tanpa -f argumen (kekuatan)

rm -rf /usr/local/mysql/data

Perintah ini akan sepenuhnya menghapus semua yang ada di jalur yang diberikan, direktori dan file dihapus.  -f digunakan sehingga tidak akan ada permintaan untuk pengguna yang mengeluarkan.


4
2018-06-04 16:59



jadi curlies {} akan berisi hasil dari find… -type f bagian dari pernyataan kapan rm aku s executed? - Meltemi
ya, kamu benar Meltemi. Saat menggunakan find dalam kombinasi -exec String {} akan diganti dengan path lengkap ke file saat ini. - S.Hoekstra


Yang pertama hanya akan menghapus file. Yang terakhir akan menghapus seluruh struktur direktori.


2
2018-06-04 15:52



apa itu ';' berarti? - Meltemi
Ini mengakhiri -exec predikat. - Ignacio Vazquez-Abrams
artinya, Anda bisa menambahkan lagi -exec melakukan sesuatu yang lain ... - akira
Berarti Anda dapat menambahkan predikat lain tanpa itu ditafsirkan sebagai argumen untuk perintah di -exec predikat. - Ignacio Vazquez-Abrams


find /usr/local/mysql/data -type f -delete hanya akan menghapus file biasa. Direktori akan tetap ada

rm -rf /usr/local/mysql/data Akan menghapus apa pun.


0
2018-06-04 15:59