इसके कुछ संभावित कारण हैं।
1)
आपने इसे केवल निर्देशिका हटाने के लिए कहा था ( -type d
), और उन निर्देशिकाओं में अभी भी उनके अंदर फाइलें हैं।
2)
आपकी निर्देशिकाओं में केवल अन्य निर्देशिकाएँ होती हैं, इसलिए -type d
सामग्री समस्या का ध्यान रखा जाएगा। हालाँकि आप OS-X का उपयोग कर रहे हैं, जो काफी हद तक FreeBSD पर आधारित है, और find
डिफ़ॉल्ट रूप से FreeBSD अपनी सामग्री से पहले निर्देशिका को संसाधित करेगा।
हालाँकि यह -depth
विकल्प find
अपनी सामग्री के बाद निर्देशिका को संसाधित करने के लिए कहकर इस समस्या को हल करने के लिए मौजूद है ।
find ~ -name __pycache__ -type d -ls -delete -depth
यह समस्या linux पर मौजूद नहीं है क्योंकि -delete
विकल्प अंतर्निहित रूप से सक्षम करता है -depth
।
FreeBSD man 1 find
:
-depth Always true; same as the non-portable -d option. Cause find to
perform a depth-first traversal, i.e., directories are visited in
post-order and all entries in a directory will be acted on before
the directory itself. By default, find visits directories in
pre-order, i.e., before their contents. Note, the default is not
a breadth-first traversal.
GNU man 1 find
:
-depth Process each directory's contents before the directory itself. The -delete
action also implies -depth.
find ~ -path '*/__pycache__*' -delete
, या शायदfind ~ -path '*/__pycache__/*' -o -name __pycache__ -delete
सुरक्षित होने के लिए।