2011-08-04 12 views
15

पर अमल किया है मैंने देखा करने के लिए अनुमति निष्पादित जोड़ने के लिए:chmod: कैसे रिकर्सिवली केवल वे फ़ाइलें जो पहले से ही अनुमति

chmod -R a+x सभी फ़ाइलों के लिए अनुमति निष्पादित कहते हैं, बस जो लोग वर्तमान में निष्पादन योग्य नहीं हैं।

क्या उन फ़ाइलों को निष्पादित अनुमतियां जोड़ने का कोई तरीका है जिनके पास पहले से ही उपयोगकर्ता अनुमति के लिए निष्पादन सेट है?

उत्तर

26

उपयोग find:

find . -perm /u+x -execdir chmod a+x {} \; 
+5

'-execdir' का उपयोग करें; यह '-exec' से सुरक्षित है। चूंकि 'chmod' एक कमांड लाइन में एकाधिक फ़ाइलों को स्वीकार करता है, इसलिए '\' के बजाय '+' बेहतर प्रदर्शन हो सकता है। – jw013

+0

'+' मोड का उल्लेख करने के लिए धन्यवाद! '-exec' के बजाय '-execdir' फिर से प्राप्त प्रदर्शन लाभ को squashes, हालांकि; और चूंकि खोज पूर्ण फ़ाइल पथ को वैसे भी प्रदान करता है, क्या इससे कोई फर्क पड़ता है? मेरे लिए सबसे तेज़ आदेश था ... -exec chmod {} + ' – codeling

5

आप उपयोग कर सकते हैं उन सभी फाइलों को पाने के लिए खोजें:

find . -type f -perm -o+rx -print0 | xargs -0 chmod a+x 

अद्यतन: -print0 जोड़ने फ़ाइल नाम में अंतरिक्ष को बचाने के लिये

+3

मत करो इस तरह, यह फ़ाइल नामों में रिक्त स्थान के साथ खराब हो जाता है। यदि आप xargs पर पाइप करना चाहते हैं, तो '-print0' ढूंढ विकल्प और '-0' xargs विकल्प का उपयोग करें। – Mat

संबंधित मुद्दे