फ़ोल्डर ढूंढें और हटाएं लेकिन सामग्री नहीं


4

मैं नाम वाले सभी फ़ोल्डरों को खोजने की कोशिश कर रहा हूं b और उन्हें हटाएं, उनकी सामग्री को हटाए बिना (चाहे फ़ोल्डर, फ़ाइलें, छिपी हुई फ़ाइलें, ...)।

उदाहरण के लिए, एक पथ में एक फ़ाइल /a/b/c/file बन जाना चाहिए /a/c/file

यहाँ मैंने कोशिश की है, जो काम नहीं करता है:

find -type d -name b -exec mv {}/* {} \; -exec rmdir {} \;

जवाबों:


4
find -type d -name b -exec echo "mv {}/* {}/..; rmdir {}" \; | sh

ठीक है शुक्रिया। छिपे हुए फ़ोल्डर / फ़ाइलों के बारे में क्या?
user311987

mv तथा rmdir दोनों को संभालो।
Cyrus

मुझे यह समाधान पसंद है, भले ही आप इस मामले में कुछ समस्याओं को पा सकते हैं, यह सिर्फ एक निर्देशिका के साथ मौजूद है जिसे आप पिता निर्देशिका में स्थानांतरित करना चाहते हैं (जब आप प्रदर्शन करते हैं mv {}/* {}/। उदा)। इसके बजाय फ़ाइलों के साथ आप ऊपरी निर्देशिका में लोगों को बिना संकेत दिए अधिलेखित कर देंगे। सभी को प्रबंधित करने के लिए मुझे लगता है कि स्क्रिप्ट करना आसान है
Hastur

साइरस, यह mv और rmdir नहीं है कि मैं छिपी हुई फ़ाइलों के बारे में चिंतित हूं, लेकिन वाइल्डकार्ड।
user311987

जोड़ना shopt -s dotglob; से पहले mv और प्रतिस्थापित करें sh द्वारा bash डॉट फाइलें और डायर भी पकड़ने के लिए।
Cyrus
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.