2015-01-13 4 views
12

मुझे फाइलों का एक गुच्छा मिला है जो "-e" में समाप्त होता है जिसे मैं निकालना चाहता हूं।ओएसएक्स निष्पादन आरएम ढूंढें: exec: अज्ञात प्राथमिक या ऑपरेटर

$ find . -name "*-e" exec rm {} \; 
find: exec: unknown primary or operator 

क्या रेगेक्स कुछ तरीकों से विस्तार कर रहा है जो सब कुछ गड़बड़ कर देता है?

+0

सी [इस सवाल] (http://stackoverflow.com/questions/706196/कैसे-से-निकालें-फाइल-स्टार्ट-द-डबल-हाइफ़न), हालांकि कुछ भी विशेष नहीं है क्योंकि '{}' '/// path/-e' तक विस्तारित हो सकता है जो कर सकता है एक विकल्प के रूप में नहीं माना जाना चाहिए। – BroSlow

+0

मैंने इस प्रश्न पर ठोकर खाई क्योंकि मैं 'खोज' और 'exec' के उदाहरणों के उपयोग की तलाश कर रहा था, इस तथ्य को देखकर कि आप' आरएम 'कर रहे थे! पीएसए: ** यह आदेश निर्देशिका की सामग्री को हटा देगा! अगर आप बस हैकिंग कर रहे हैं तो सावधानी के साथ प्रयोग करें। ** मैंने कड़ी मेहनत सीखी। – Eric

उत्तर

17

यह होना चाहिए:

find . -name "*-e" -exec rm '{}' \; 

या बेहतर:

find . -name "*-e" -exec rm '{}' + 

के अनुसार man find:

-exec utility [argument ...] {} + 
    Same as -exec, except that ``{}'' is replaced with as many pathnames as possible for 
    each invocation of utility. This behaviour is similar to that of xargs(1). 
+1

धन्यवाद, लेकिन मुझे इनमें से दोनों के लिए एक ही त्रुटि मिलती है। :( – freedrull

+2

आह, मैं 'exec' नहीं '-exec' का उपयोग कर रहा था .... – freedrull

+2

धन्यवाद !!!!!!! – freedrull

संबंधित मुद्दे