ऐसी फाइलों की तलाश में जिनके स्वामित्व में कोई नहीं है


182

मैं एक विशेष उपयोगकर्ता के स्वामित्व वाली फ़ाइलों को खोजने के लिए निर्देशिकाओं के माध्यम से पुन: देखने के लिए देख रहा हूं और मुझे यकीन नहीं है कि यह कैसे लिखना है।

जवाबों:


274

खोज (1) उपयोगिता में ऐसी प्राइमरी हैं जिन्हें "" का उपयोग करके नकारात्मक ("उलटा") किया जा सकता है! ऑपरेटर। शीघ्र ही एक बैकस्लैश के साथ नकार से बचना चाहिए क्योंकि यह एक शेल मेटाचैकर है। परिणाम:

find . \! -user foo -print

6
बचने के !लिए वैकल्पिक लगता है
double1ejack

1
xargs -I{} -P3 -- ${cmdhere} {}समानांतर में प्रत्येक फ़ाइल पर $ {cmdhere} का आउटपुट हो सकता है। cmdhere :: = मानक यूनिक्स बर्तन; मानक यूनिक्स बर्तन :: = chmod, chown, स्टेट, ls, ...
ड्वाइट स्पेंसर

1
@ सोरिन का मतलब है find . ...या xargsपहले या दूसरे तरीके से पाइपिंग करना ?
केव

3
खोज में -exec झंडा है -> find . ! -user foo -exec chown <owner>:<group> {} \;
pastephens

1
आउटपुट के रूप में स्वामी की जानकारी कैसे जोड़ें?
डुक ट्रान

38

ऐसी फाइलों की तलाश में जिनके स्वामित्व में कोई नहीं है

अन्य लोगों ने सवाल का जवाब दिया " शरीर में किसी विशेष उपयोगकर्ता के स्वामित्व में नहीं" । यहाँ एक है जो दशकीय प्रश्न का उत्तर देता है लेकिन प्रदान नहीं किया गया है:

$ find / -nouser

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

$ sudo find /var/www -nouser -exec chown root:apache {} \;

और एक संबंधित:

$ find / -nogroup

3
मैं आपको तकनीकीता के लिए एक वोट दूंगा, लेकिन लोग आमतौर पर "किसी के स्वामित्व में नहीं" कहेंगे यदि उनका मतलब था कि आप क्या व्याख्या कर रहे थे।
शिबूमी

2
@ शिबिमी - हाँ, उन बंटवारे बालों के लिए सही लगता है। मैं जिस समस्या का सामना कर रहा था, मुझे उन फ़ाइलों को खोजने की आवश्यकता थी जो किसी भी उपयोगकर्ता के पास नहीं हैं। यह वेब सर्वर रिफ्रेश और माइग्रेशन के बाद सामने आया। कुछ उपयोगकर्ता / समूह आईडी बदल गए हैं इसलिए मुझे एक चोन की स्क्रिप्ट करने की आवश्यकता है।
jww

12

-userउपयोगकर्ता या उपयोगकर्ता आईडी द्वारा पाया जाता है, और !विधेय को निष्क्रिय करता है। तो, ! -user ...


2
डाउनवोट किया गया क्योंकि यह स्वीकृत उत्तर के लिए कुछ भी नहीं जोड़ता है, और यह अन्य संभावित उत्तर (जैसे नीचे zsh ग्लोब पैटर्न) को मास्क करता है।
उलेसे बीएन

9

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

find <dir> ! -user <username> 

2
डाउनवोट किया गया क्योंकि यह स्वीकृत उत्तर के लिए कुछ भी नहीं जोड़ता है, और यह अन्य संभावित उत्तर (जैसे नीचे zsh ग्लोब पैटर्न) को मास्क करता है।
उलेसे बीएन

5

Z- शेल (zsh) का उपयोग करके आप उपयोग कर सकते हैं

ls -laR *(^U)

या

ls -la **/*(^U)

आपके द्वारा पुन: स्वामित्व नहीं की गई सभी फ़ाइलों की खोज करने के लिए।


यह सच है कि ऊपर दिए गए आदेश में डॉट फाइलें सूचीबद्ध नहीं होंगी, यहां तक -aकि वाइल्डकार्ड विस्तार के कारण ध्वज के साथ भी । डॉट को पकड़ने के लिए फ़ाइलों zsh का उपयोग dotglobविकल्प: setopt dotglob। एक पंक्ति में: (setopt dotglob; ls **/*(^U) )। कोष्ठक एक उपधारा में चलाने के लिए है ताकि setopt nodotglobआपके समाप्त होने के बाद आपको भागना न पड़े ।
जोरावर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.