सभी उपनिर्देशिका कैसे निकालें? (यूनिक्स शेल स्क्रिप्टिंग)

Jan 15 2021

मेरे पास एक निर्देशिका है जिसे "सीडीआर-रोमिंग" कहा जाता है। हर दिन मुझे एक या एक से अधिक। ज़िप फाइलें मिलती हैं और उन्हें इसके साथ खोलना होता है:

#!/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 फाइलें इसके अंदर हैं)

जवाब

2 user1934428 Jan 15 2021 at 15:17

चूंकि आप बैश का उपयोग कर रहे हैं, कैसे

rm -rf /dados/cdrs-roaming/*/

अंतिम स्लैश यह सुनिश्चित करता है कि बैश केवल निर्देशिका के लिए पैटर्न का विस्तार करता है।

1 TimurShtatland Jan 15 2021 at 05:27

उपयोग -mindepth 1विकल्प:

find /dados/cdrs-roaming/ -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;