एक विशेष उपयोगकर्ता के स्वामित्व वाली सभी फ़ाइलों की पुनरावृत्ति करें


32

क्या एक विशिष्ट उपयोगकर्ता के पास मौजूद सभी फ़ाइलों को ढूंढना और उन्हें रोकना संभव है? मैंने गलत उपयोगकर्ता के रूप में चीजों का एक गुच्छा किया और फाइलों का सही उपयोगकर्ता स्वामित्व देने की आवश्यकता है।

वहाँ एक पुनरावर्ती और सशर्त तरीका है जो मैं फ़ाइलों और निर्देशिकाओं का एक गुच्छा चुन सकता हूं?

जवाबों:


60

आप इस पोर्टेबल खोज कमांड का उपयोग कुछ इस तरह से कर सकते हैं।

find . -user old-user -exec chown new-user:new-group {} \;

आप -iname विकल्पों के साथ विशिष्ट फ़ाइलों को खोजने के लिए इसका विस्तार कर सकते हैं (गैर POSIX लेकिन OSX पर उपलब्ध)

find . -iname '*.html' -user www-data -exec chown www-data:www-data {} \;

द। वर्तमान फ़ोल्डर और नीचे के लिए खड़ा है, इसलिए आप आधार के रूप में एक विशिष्ट पथ का उपयोग कर सकते हैं।

find /var/www/ -iname '*.html' -user www-data -exec chown www-data:www-data {} \;

जिसे मैं ढूंढ रहा था। लेकिन सिर्फ इस बात पर ध्यान दें कि new-user:new-usernew-user:new-group
चाउने के

2
मैं अनुमान लगा रहा हूं कि घुंघराले कोष्ठक रिक्त स्थान को ठीक से संभालने के लिए उद्धरणों में होना चाहिए। तोfind . -user old-user -exec chown new-user:new-group "{}" \;
दान बेनामी

यदि कोई व्यक्ति किसी निश्चित उपयोगकर्ता के स्वामित्व वाली फ़ाइलों को नहीं ढूँढ रहा है, तो (उस उपयोगकर्ता के स्वामित्व वाली उपयोगकर्ता की फ़ाइलें जो उस उपयोगकर्ता के स्वामित्व में नहीं हैं), आप जोड़ सकते हैं! ' -user other-userविपरीत खोजने के लिए अनुभाग। उदाहरण के लिए, find . ! -user other-user
जॉन

जब आप जोड़ते हैं तो अक्सर उपर्युक्त अधिक उपयोगी होता है -group old-group। इस तरह से आप समूह के स्वामित्व (प्रशासन, कर्मचारी, sillyothergroupname) को संरक्षित कर सकते हैं
branlmerritt

ps - chown को sudo
brianlmerritt

12

आप उपयोग कर सकते हैं

chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group  *

मैनुअल से chown --help:

  --from=CURRENT_OWNER:CURRENT_GROUP
                     change the owner and/or group of each file only if
                     its current owner and/or group match those specified
                     here.  Either may be omitted, in which case a match
                     is not required for the omitted attribute.

संपादित करें : यह, ज़ाहिर है, केवल linux और अधिकांश UNIces पर काम करता है । OSX के लिए (जो BSD पर आधारित है) @StephenTrapped का समाधान देखें।


+1 लेकिन यह OSX पर काम नहीं करेगा, इसका chownविकल्प नहीं है, यहाँ देखें ।
टेराडन

उफ़, वास्तव में, मैं osx टैग से चूक गया :) वोट किया @StephenTrapped।
रिक

chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group *फ़ोल्डर कमांड में छिपी हुई फ़ाइलों को छोड़ दिया जाएगा, हालांकि chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group ., मूल फ़ोल्डर में छिपी हुई फ़ाइलों के लिए भी काम करता है।
लशै

3

-hचाउन का विकल्प प्रतीकात्मक लिंक फ़ाइलों की अनुमति को बदल देता है और न केवल लक्ष्य।

सॉफ्टवेयर बाइनरी फ़ोल्डर्स पर ऐसा करते समय यह महत्वपूर्ण हो सकता है, जो संस्करणों के बीच स्विच करने के लिए सिम्बोलिक लिंक का उपयोग करते हैं।

find . -user old-user -exec chown -h new-user:new-group {} \;

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