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.