सभी उपनिर्देशिका कैसे निकालें? (यूनिक्स शेल स्क्रिप्टिंग)
मेरे पास एक निर्देशिका है जिसे "सीडीआर-रोमिंग" कहा जाता है। हर दिन मुझे एक या एक से अधिक। ज़िप फाइलें मिलती हैं और उन्हें इसके साथ खोलना होता है:
#!/bin/bash
for i in *.zip
do
j=${i//\.zip/} mkdir $j
cd $j unzip ../$i
cd -
done
फिर मेरे पास उदाहरण के लिए: "example1.zip" और "example1"; "example2.zip" और "example2"
मैं इस मामले में सभी ज़िप फाइलें निकाल रहा हूं: "example1.zip" और "example2.zip") इस के साथ:
#! /bin/bash
find /dados/cdrs-roaming/*.zip -mtime +1 -exec rm {} \;
इसलिए मैं निर्देशिकाओं (या फ़ोल्डरों को हटाना चाहता हूं - मुझे वास्तव में अंतर नहीं पता है) "example1" और "example2"। मैंने यह कोशिश की है:
#! /bin/bash
find /dados/cdrs-roaming/ -type d -mtime +1 -exec rm -rf {} \;
लेकिन यह "सीडीआर-रोमिंग" को भी हटा देता है। मैंने भी उपयोग करने की कोशिश की है:
find /cdrs-roaming/ -type d -mtime +1 -exec rm -rf {} \;
लेकिन यह लौटता है: पाते हैं: '/ सीडीआर-रोमिंग /': ऐसी कोई फ़ाइल या निर्देशिका नहीं
यह करने के लिए कोई विचार? मुझे "सीडीआर-रोमिंग" के भीतर केवल निर्देशिकाओं को हटाने की आवश्यकता है, लेकिन मैं इसके अंदर कुछ और नहीं निकाल सकता (मेरी .sh फाइलें इसके अंदर हैं)
जवाब
चूंकि आप बैश का उपयोग कर रहे हैं, कैसे
rm -rf /dados/cdrs-roaming/*/
अंतिम स्लैश यह सुनिश्चित करता है कि बैश केवल निर्देशिका के लिए पैटर्न का विस्तार करता है।
उपयोग -mindepth 1
विकल्प:
find /dados/cdrs-roaming/ -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;