जैसा कि एक और उत्तर बताता है, आप सभी निर्देशिकाओं को खोजने का प्रयास कर सकते हैं नाम के साथtest
और उन्हें हटाने का हैं
find -name "test" -type d -delete
मैं मैक पर क्रॉस संगतता के साथ कुछ मुद्दों में भाग गया, इसलिए मैंने इस समतुल्य कमांड का उपयोग किया:
find -path "*/test" -type d -delete
- -पथ : पूरी तरह से योग्य फ़ाइलनाम में एक पैटर्न की तलाश करता है।
हालाँकि, किसी भी मामले में, यदि कोई निर्देशिका नाम है test
में फाइलें हैं, तो find
वे शिकायत करेंगे कि Directory is not empty
निर्देशिका को हटाने में विफल हो जाएगा।
यदि आप निर्देशिका सहित सभी फ़ाइलों को हटाने का इरादा रखते हैं test
, तो हम नामित निर्देशिकाओं के अंदर सभी फ़ाइलों को हटाने के लिए एक ही चाल का उपयोग कर सकते हैंtest
पहले ।
find -path "*/test/*" -delete
पैटर्न:, "*/test/*"
यह सुनिश्चित करेगा कि हम केवल एक निर्देशिका नाम के अंदर फ़ाइलों को हटा दें /test/
। एक बार निर्देशिका खाली हो जाने पर, हम आगे जा सकते हैं और पहले कमांड का उपयोग करके निर्देशिकाओं को हटा सकते हैं:
find -path "*/test" -type d -delete
उदाहरण:
$ tree
.
├── mytest
│ └── test
│ └── blah.txt
├── test
│ ├── bar.jpg
│ └── dir
│ └── bar.bak
└── testdir
└── baz.c
5 directories, 4 files
$ find -path "*/test" -type d -delete
$ tree
.
├── mytest
│ └── test
├── test
└── testdir
└── baz.c
4 directories, 1 file
$ find -name "test" -type d -delete
$ tree
.
├── mytest
└── testdir
└── baz.c
2 directories, 1 file
+
खोजने में। मुझे पता नहीं था, निश्चित रूप से कामना करता हूं कि मुझे पता था कि बहुत पहले।