आप वास्तव में पाइप कर रहे हैं rm
के उत्पादन के इनपुट करने के लिए find
। क्या आप चाहते हैं के उत्पादन में उपयोग करने के लिए है find
के रूप में बहस करने के लिए rm
:
find -type f -name '*.sql' -mtime +15 | xargs rm
xargs
वह कमांड है जो किसी अन्य प्रोग्राम के तर्कों में अपने मानक इनपुट को "रूपांतरित" करता है, या, जैसा कि वे man
पृष्ठ पर अधिक सटीक रूप से डालते हैं ,
मानक इनपुट से कमांड लाइनों का निर्माण और निष्पादित करें
ध्यान दें कि यदि फ़ाइल नामों में व्हाट्सएप अक्षर हो सकते हैं, तो आपको इसके लिए सही होना चाहिए:
find -type f -name '*.sql' -mtime +15 -print0 | xargs -0 rm
लेकिन वास्तव में, find
इसके लिए एक शॉर्टकट है: -delete
विकल्प:
find -type f -name '*.sql' -mtime +15 -delete
कृपया निम्नलिखित चेतावनियों से अवगत रहें man find
:
Warnings: Don't forget that the find command line is evaluated
as an expression, so putting -delete first will make find try to
delete everything below the starting points you specified. When
testing a find command line that you later intend to use with
-delete, you should explicitly specify -depth in order to avoid
later surprises. Because -delete implies -depth, you cannot
usefully use -prune and -delete together.
पीएस ध्यान दें कि सीधे पाइपिंग rm
एक विकल्प नहीं है, क्योंकि rm
मानक इनपुट पर फ़ाइल नाम की उम्मीद नहीं है। वर्तमान में आप जो कर रहे हैं, वह उन्हें पीछे की ओर कर रहा है।