"खोजें:` -exec 'के लिए' '-exec rm -f {} \ "का उपयोग करते समय लापता तर्क


12

मैं यह आदेश चलाता हूं:

~/shell_temp$ find . -type f -name "IMAG1806.jpg" -exec rm -f {}\

मुझे नीचे आउटपुट मिला:

> IMAG1806.jpg

Error:
find: missing argument to `-exec'

वर्तमान निर्देशिका से किसी भी फ़ाइल को खोजने और हटाने के लिए सटीक कमांड क्या है -exec?


1
तुम सिर्फ करने के लिए नहीं कर सकते rm "IMAG1806.jpg"? यह उसी निर्देशिका में है, इसलिए आप जानते हैं कि इसे क्या कहा जाता है।
द वेंडर

@ Zacharee1 - मान लेंगे कि ओपी एक "ड्राई रन" कर रहा है। मैं rm के साथ ai का उपयोग करने के बारे में विचार करूंगा, यदि आपकी फ़ाइल "खोज" अधिक फ़ाइलों का इरादा है या कम से कम चल रही है -exec के बिना चल रही है और फ़ाइल सूची की समीक्षा कर रही है
पैंथर

1
@ Zacharee1: खोज कमांड वर्तमान निर्देशिका में इस नाम के साथ कॉल की गई सभी फ़ाइलों को और इसकी सभी उपनिर्देशिकाओं (कम गहराई पर) को हटा देगी।
डेनिस

3
या उपयोग करने के बजाए -exec rmसिर्फ उपयोग -deleteसीधे।
ब्रियम

जवाबों:


30

आप ;अंत में याद किया (और एक जगह के बीच भी {}और ;)। सही आदेश है:

find . -type f -name "IMAG1806.jpg" -exec rm -f {} \;

;की -execभविष्यवाणी का अंत इंगित करता है find

यह भी ध्यान दें कि हमने शेल द्वारा व्याख्या से बचने के लिए \;यानी \सामने का उपयोग किया है , अन्यथा शेल पूरे कमांड के अंत के रूप में व्यवहार करेगा और उसी त्रुटि को फेंक देगा। तुम भी उपयोग कर सकते हैं के बजाय ।;;;findfind';'\;

आप \अंत में उपयोग कर रहे थे , यह इंगित करता है कि आपका शेल इनपुट के माध्यम से लेना जारी रखेगा PS2(इसके द्वारा इंगित किया गया है >), आपने IMAG1806.jpgफिर से टाइप किया है, इसलिए पूरी कमांड है:

find . -type f -name "IMAG1806.jpg" -exec rm -f {}IMAG1806.jpg

आप देख सकते हैं इस के साथ सभी में एक वैध आदेश नहीं है IMAG1806.jpgअंत में, कोई के समापन -execके बीच विधेय और एक अंतरिक्ष के बिना {}और \;


1
"आप एक चूक ;इस के लिए धन्यवाद अंत में", खर्च करने से पहले मुझे एहसास हुआ कि मैं गलती से लिखा हो 10 मिनट के निवारण के :बजाय ;, इन आधुनिक HD स्क्रीन याद आती है करने के लिए अपने आसान पर ...
user5359531

7

आप बस कर सकते हैं

find . -type f -name 'IMAGE1806.jpg' -delete

मैन पेज से:

Delete files; true if removal succeeded.  If the removal failed,
an  error message is issued.  If -delete fails, find's exit sta‐
tus will be nonzero (when it eventually exits).  Use of  -delete
automatically turns on the -depth option.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.