Saya sedang mengerjakan SSH pada WD My Book World Edition. Pada dasarnya saya ingin memulai pada tingkat direktori tertentu, dan secara rekursif menghapus semua sub-direktori yang cocok dengan .Apple*
. Bagaimana saya melakukannya?
Saya mencoba
rm -rf .Apple*
dan rm -fR .Apple*
tidak menghapus direktori yang cocok dengan nama itu di dalam sub-direktori.
Jawaban yang Diterima:
find
sangat berguna untuk melakukan tindakan secara selektif pada seluruh pohon.
find . -type f -name ".Apple*" -delete
Di sini, -type f
memastikan itu adalah file, bukan direktori, dan mungkin tidak persis seperti yang Anda inginkan karena itu juga akan melewati symlink, soket, dan hal-hal lain. Anda dapat menggunakan ! -type d
, yang secara harfiah berarti bukan direktori, tetapi Anda juga dapat menghapus karakter dan memblokir perangkat. Saya sarankan melihat -type
predikat pada halaman manual untuk find
.
Untuk melakukannya secara ketat dengan wildcard, Anda memerlukan dukungan shell tingkat lanjut. Bash v4 memiliki globstar
opsi, yang memungkinkan Anda mencocokkan subdirektori secara rekursif menggunakan **
. zsh
dan ksh
juga mendukung pola ini. Dengan menggunakan itu, Anda dapat melakukan rm -rf **/.Apple*
. Ini bukan standar POSIX, dan tidak terlalu portabel, jadi saya akan menghindari menggunakannya dalam skrip, tetapi untuk tindakan shell interaktif satu kali, tidak masalah.