तीन और विकल्प।
के find
साथ प्रयोग करें -mindepth 1
और -delete
:
Ormindepth के स्तर
किसी भी परीक्षण या कार्यों को स्तरों (एक गैर any नकारात्मक पूर्णांक) से कम स्तरों पर लागू नहीं करते हैं।
Themindepth 1 का अर्थ है कमांड लाइन के तर्कों को छोड़कर सभी फाइलों को प्रोसेस करना।
-delete
फ़ाइलें हटाएं; सच अगर हटाने में सफल रहा। यदि निष्कासन विफल हुआ, तो एक त्रुटि संदेश जारी किया जाता है। यदि nondelete विफल रहता है, तो बाहर निकलने की स्थिति को नॉनज़रो (जब यह अंततः बाहर निकलता है) मिलेगा। Ofdelete का उपयोग स्वचालित रूप से optiondepth विकल्प को चालू करता है।
इस विकल्प का उपयोग करने से पहले -depth विकल्प के साथ सावधानीपूर्वक परीक्षण करें।
# optimal?
# -xdev don't follow links to other filesystems
find '/target/dir with spaces/' -xdev -mindepth 1 -delete
# Sergey's version
# -xdev don't follow links to other filesystems
# -depth process depth-first not breadth-first
find '/target/dir with spaces/' -xdev -depth -mindepth1 -exec rm -rf {} \;
2. उपयोग करें find
, लेकिन फाइलों के साथ, निर्देशिका नहीं। यह करने की आवश्यकता से बचा जाता है rm -rf
:
# delete all the files;
find '/target/dir with spaces/' -type f -exec rm {} \;
# then get all the dirs but parent
find '/target/dir with spaces/' -mindepth 1 -depth -type d -exec rmdir {} \;
# near-equivalent, slightly easier for new users to remember
find '/target/dir with spaces/' -type f -print0 | xargs -0 rm
find '/target/dir with spaces/' -mindepth 1 -depth -type d -print0 | xargs -0 rmdir
3. आगे बढ़ो और मूल निर्देशिका को हटा दें, लेकिन इसे फिर से बनाएँ। आप एक कमांड के साथ ऐसा करने के लिए बैश फ़ंक्शन बना सकते हैं; यहाँ एक साधारण एक लाइनर है:
rm -rf '/target/dir with spaces' ; mkdir '/target/dir with spaces'