सभी उपनिर्देशिकाओं में chmod फ़ाइलें


54

कृपया कोई मुझे chmod के साथ सहायता करें, मेरे पास निम्न फ़ाइल संरचना है

-dir1
--file1
--file2
--dir1a
---file1a1
---file1a2
--dir1b
---file1b1
---file1b2

कैसे मैं dir1 और सभी उपखंड के तहत सभी फ़ाइलों को 655 chmod ? इसलिए सभी फाइलों में 655 की अनुमति होगी और सभी डीआर उसी तरह बने रहेंगे जैसे वे थे।

धन्यवाद

जवाबों:


108

उपयोग करने के लिए बेहतर है

find . -type f -exec chmod 655 -- {} +

@Sagarchalise से दूसरा प्रस्तावित समाधान काम नहीं करेगा अगर फ़ाइलनाम में स्थान हो या डैश के साथ प्रारंभ हो।


16
संबंधित, सभी निर्देशिकाओं find . -type d -exec chmod 755 {} +को बदलने के लिए आप सभी निर्देशिकाओं को 755 में बदलने के लिए उपयोग कर सकते हैं ।
क्रिश हार्पर

2
के लिए + क्या है?
ब्रेटस्की

3
@ ब्रेत्स्की: +साइन का विस्तार findफ़ाइल पथों की सूची (या इसके कुछ भाग, यदि बहुत लंबा हो) द्वारा किया जाता है।
enzotib

3
क्या है - के लिए?
ओरिएंट

2
--कमांड लाइन विकल्प के अंत का संकेत है। यह हाइफ़न से शुरू होने वाली फ़ाइल को कमांड लाइन विकल्प के रूप में व्याख्या करने से रोकता है क्योंकि यह उसके बाद आएगा --
टिम टिस्डाल

8

मुझे लगता है कि अंदर जा रहा है dir1और

find . -type f | xargs chmod 655

चाल चलेगा।


यह भी काम करता है, लेकिन मुझे "ऐसी कोई फ़ाइल या निर्देशिका" के साथ कुछ चेतावनी नहीं मिली है
net

@ वैमानिक: यह निर्भर करता है, जैसा कि मेरे उत्तर में कहा गया है, रिक्त स्थान वाले फ़ाइलनाम पर।
enzotib

4
पूर्णता के लिए, इसे खोजने के लिए बदल रहा है। -प्रत्यय f -print0 | xargs -0 chmod 655 मेरे द्वारा बताए गए स्थान के मुद्दे को ठीक करेगा, हालांकि @ enzotib का उत्तर अधिक संक्षिप्त है
मैट फ़्रीके

क्या मैट फ़्रीके कहा
सर्गी Kolodyazhnyy
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.