Saya menjalankan perintah berikut:
find /var/www/html/content/processing -type d -mtime +1 -exec rm -rf {} \;
Saya ingin menghapus semua folder di bawah processing
folder (folder pemrosesan tidak boleh dihapus).
Perintah juga menghapus processing
folder. Bagaimana cara membatasi skrip untuk hanya menghapus folder di bawah folder itu?
Jawaban:
Cara termudah adalah dengan hanya menambahkan
-mindepth 1
, yang akan melewati hierarki kedalaman pertama dan meninggalkan direktori induk Anda.Selain itu, Anda tidak perlu
-exec
panggilan tambahanrm
, Anda dapat langsungdelete
membuka folder jika kosong.Jika tidak kosong:
Jika Anda malas, Anda juga dapat memiliki wildcard diperluas. Karena
*
tidak memasukkan direktori saat ini secara default ( kecualidotglob
diatur ), Anda juga dapat melakukan:Namun, ini juga tidak termasuk folder tersembunyi, lagi karena
dotglob
opsi.sumber
Masalahnya adalah bahwa find mengembalikan direktori saat ini (.) Bersama dengan direktori lain, sehingga menghapus folder pemrosesan serta subdirektori. Cara cepat untuk menyiasatinya adalah dengan menambahkan opsi
yang berhenti menemukan dari keluaran direktori saat ini, dan pada gilirannya menghentikannya dari dihapus.
Itu akan berhasil jika Anda menjalankan perintah di dalam direktori pemrosesan, jadi untuk memungkinkan Anda menggunakan jalur absolut:
Dan seluruh perintahnya adalah:
sumber
-name
mengacu pada nama dasar, itu tidak pernah cocok dengan slash. Anda mungkin perlu menggunakan-path
.Sudah dijawab, masih saya ingin daftar pendekatan lain.
find /var/www/html/content/processing -mindepth 1 -maxdepth 1 -type d
Ini akan mengecualikan direktori teratas (dan juga sub direktori), dan sekarang Anda dapat menerapkan perintah apa pun yang ingin kami terapkan di atasnya.
>> Opsi:
-mindepth 1: Untuk mengecualikan direktori root
-maxdepth 1: Untuk menghindari penguraian sub direktori. (Untuk skenario tertentu seperti yang dipertanyakan, Anda tidak memerlukan ini).
-type d: Daftar hanya jenis direktori. Pilihan ini harus datang setelah penggunaan maxdepth mindepth.
sumber
-maxdepth 1
? Mengapa-type d
dua kali? Apa bedanya dengan jawaban yang diterima?