मैं हर फ़ाइल को हटाना चाहता हूं, लेकिन फ़ोल्डर की संरचना को बनाए रखें। क्या उधर रास्ता है?
नोट: (मैं GNU बैश 4.1.5 का उपयोग कर रहा हूँ)।
मैं हर फ़ाइल को हटाना चाहता हूं, लेकिन फ़ोल्डर की संरचना को बनाए रखें। क्या उधर रास्ता है?
नोट: (मैं GNU बैश 4.1.5 का उपयोग कर रहा हूँ)।
जवाबों:
इसे इस्तेमाल करे:
find . ! -type d -exec rm '{}' \;
यह वर्तमान कार्यशील निर्देशिका के नीचे, निर्देशिकाओं को छोड़कर हर एक फ़ाइल को हटा देगा। इस आज्ञा के साथ अत्यंत सावधान रहें।
यदि find
आपकी मशीन का संस्करण इसका समर्थन करता है, तो आप इसका उपयोग भी कर सकते हैं
find . ! -type d -delete
find
आदेश कभी नहीं उद्धरण चिह्नों को देखता है। यह सिर्फ {}
मार्कर को एक तर्क के रूप में देखता है।
-exec command {} +
" और यह " -exec command ;
"। मैंने \;
अतीत में कभी भी '{}' का उपयोग नहीं किया है।
आप find
प्रत्येक फ़ाइल का पता लगाने के लिए कमांड का उपयोग कर सकते हैं लेकिन निर्देशिका संरचना को बनाए रख सकते हैं:
$ find /some/dir -type f -exec rm {} +
इस यूनिक्स और लिनक्स के अनुसार क्यू एंड ए शीर्षक: ग्नू और कुछ गोले के लिए {} मास्किंग - जो? , {}
एकल टिक्स के साथ भागने ( '
) जैसे बश के रूप में आधुनिक दिन के गोले के साथ अब आवश्यक नहीं प्रतीत होता है।
वर्तमान निर्देशिका और उपनिर्देशिकाओं में हर नियमित फ़ाइल को हटाने का आसान तरीका पुनरावर्ती:
zsh -c 'rm **/*(.)'
केवल zsh में टाइप द्वारा फाइलों का मिलान करने के लिए ग्लोबिंग क्वालिफायर हैं । हालाँकि, rm
कमांड निर्देशिकाओं पर काम नहीं करता है, इसलिए बैश में, आप उपयोग कर सकते हैं
shopt -s globstar
rm **/*
rm
हालांकि इसके अलावा अन्य कमांड के लिए यह काम नहीं करता है । सामान्य तौर पर, आप इसका उपयोग कर सकते हैं find
:
find . -type f -delete
या यदि आपका find
समर्थन नहीं करता है -delete
:
find . -type f -exec rm {} +
मुझे निर्देशिका संरचना को हटाने के साथ एक पथ और इसके उप निर्देशिकाओं (समय के अनुसार फ़िल्टरिंग) से फ़ाइलों को हटाने की समान आवश्यकता थी।
और मैंने नीचे प्रारूप का उपयोग किया है जो मेरे लिए काम करता है।
find / test123 / home / test_file_hip / data / nfs -mtime +6 -type f -exec rm {} \;
सिंटेक्स: (फ़ाइल का पथ) -MIME (दिनों से अधिक या कम) -type f -exec rm {} \;
-प्रकार: "d" डायरेक्टरी -exec के लिए फ़ाइल "f" के प्रकार का उल्लेख करें: कमांड rm निष्पादित करें: निकालें {}: खोज कमांड का आउटपुट
नोट: उपयोग करने से पहले इसका परीक्षण करें। अगर मुझे कुछ भी याद है तो कृपया सही या अपडेट करने के लिए स्वतंत्र महसूस करें।
find ... rm
संरचना पहले ही कवर की जा चुकी है, मुझे यकीन नहीं है कि इस प्रश्न के उत्तर के रूप में यह एक मूल्यवान योगदान है।