ढूंढें लिनक्स शेल में कमांड आपको फाइल सिस्टम में फाइलों को खोजने की अनुमति देता है। यह नाम, उपयोगकर्ता अनुमतियों और आकार के आधार पर फ़ाइलें ढूंढ सकता है। ढूंढें कमांड मिली फाइलों पर भी कार्रवाई कर सकता है।
कमांड सिंटैक्स ढूंढें
ढूंढें . के लिए सिंटैक्स आदेश इस प्रकार है:
find [OPTIONS] [PATH] [EXPRESSION]
कहां:
- [विकल्प] खोज व्यवहार निर्धारित करने के लिए नीचे दी गई तालिका से विकल्प हैं
- [पाथ] खोज के लिए शुरुआती बिंदु है
- [अभिव्यक्ति] मेल खाने वाली फाइलों और मिली फाइलों पर की जाने वाली किसी भी कार्रवाई को खोजने के लिए परीक्षणों को परिभाषित करता है
विकल्प
यहां आमतौर पर उपयोग किए जाने वाले विकल्प . हैं ढूंढने . के लिए आदेश, मैनुअल से अनुकूलित:
-P | कभी भी प्रतीकात्मक लिंक का पालन न करें। यह डिफ़ॉल्ट व्यवहार है |
-एल | प्रतीकात्मक लिंक का पालन करें। फ़ाइलों के बारे में जानकारी की जांच या प्रिंट करते समय, उपयोग की गई जानकारी उस फ़ाइल के गुणों से ली जाएगी, जिस पर लिंक इंगित करता है, न कि लिंक से ही |
-एच | कमांड लाइन तर्कों को संसाधित करने के अलावा, प्रतीकात्मक लिंक का पालन न करें |
अभिव्यक्ति
ढूंढें . से ये कुछ सामान्य कथन मैनुअल जिसका उपयोग अभिव्यक्ति, . बनाने के लिए किया जा सकता है जो फाइलों के मिलान के लिए परीक्षण करता है और वैकल्पिक रूप से उन पर कार्रवाई करता है:
परीक्षा (खोज शर्तें) | |
---|---|
-खाली | खाली फ़ाइलें ढूंढें |
-निष्पादन योग्य | उन फ़ाइलों से मेल खाता है जो निष्पादन योग्य और खोजने योग्य निर्देशिकाएं हैं |
-समूह नाम | फ़ाइल नाम . के समूह से संबंधित है |
-mtime n | फ़ाइलों का डेटा पिछली बार इससे कम, इससे अधिक या ठीक n*24 घंटे पहले संशोधित किया गया था |
-नाम पैटर्न | फ़ाइल नाम का आधार (अग्रणी निर्देशिकाओं वाला पथ) पैटर्न से मेल खाता है पैटर्न |
-पथ पैटर्न | फ़ाइल पथ पैटर्न से मेल खाता है पैटर्न |
-पठनीय | उन फ़ाइलों से मेल खाता है जो वर्तमान उपयोगकर्ता द्वारा पठनीय हैं |
-आकार n | फ़ाइल n इकाइयों से कम, उससे अधिक या ठीक n इकाइयों का उपयोग करती है, राउंड अप (उपलब्ध इकाइयों के लिए नीचे तालिका देखें) |
-प्रकार c | फ़ाइल प्रकार की है c (c . के मानों के लिए नीचे दी गई तालिका देखें ) |
-उपयोगकर्ता नाम | फ़ाइल का स्वामित्व नाम . के पास है उपयोगकर्ता |
कार्रवाइयां | |
---|---|
-प्रिंट | फ़ाइल का नाम आउटपुट करता है (डिफ़ॉल्ट क्रिया) |
-छंटनी | Ff फ़ाइल एक निर्देशिका है, उसमें न उतरें |
-गहराई | प्रत्येक निर्देशिका की सामग्री को निर्देशिका से पहले ही संसाधित करें |
-हटाएं | मिलान वाली फ़ाइलें हटाएं. -डिलीट एक्शन भी एक विकल्प की तरह काम करता है (क्योंकि इसका मतलब है -गहराई) |
-exec कमांड | निष्पादित करें कमांड |
-execdir कमांड | जैसे -exec, लेकिन निर्दिष्ट कमांड उपनिर्देशिका से चलती है जिसमें मिलान की गई फ़ाइल होती है |
-ठीक है कमांड | लाइक -exec लेकिन पहले उपयोगकर्ता से पूछें। |
-okdir कमांड | जैसे -execdir लेकिन उपयोगकर्ता से पहले उसी तरह पूछें जैसे -ok के लिए। |
-printf प्रारूप | फ़ाइल विवरण प्रारूप में प्रिंट करें |
अभिव्यक्ति में ऑपरेटर
ऑपरेटरों का उपयोग एक अभिव्यक्ति में वस्तुओं को एक साथ श्रृंखलाबद्ध करने के लिए किया जा सकता है:
-o | या |
-a | और (किसी भी ऑपरेटर द्वारा आपूर्ति नहीं किए जाने पर अभिव्यक्तियों के बीच डिफ़ॉल्ट ऑपरेटर |
फ़ाइलों को खोजने के लिए विकल्पों और अभिव्यक्तियों की पूरी सूची के लिए, आप निम्नलिखित चला सकते हैं:
man find
कमांड उदाहरण ढूंढें
मिलान करने वाली फ़ाइलों या जटिल कार्यों को सूचीबद्ध करने के लिए सरल खोज संचालन बनाने के लिए विकल्प, अभिव्यक्ति और क्रियाओं को जोड़ा जा सकता है जो जटिल परिस्थितियों से फाइलें ढूंढ सकते हैं और एक क्रिया कर सकते हैं। उदाहरण के लिए नीचे देखें:
फ़ाइल नाम से फ़ाइलें ढूंढें
इस उदाहरण में myfile . नाम की सभी फ़ाइलें मिलती हैं निर्देशिका में /घर/पेंच :
find /home/screw -name myfile
प्रकार के अनुसार खोजें
उपरोक्त आदेश सभी मेल खाने वाली फ़ाइलें लौटाएगा - सहित निर्देशिका, लिंक और डिवाइस - फ़ाइल सिस्टम में सब कुछ।
-प्रकार f अभिव्यक्ति खोज को फ़ाइलों . तक सीमित करती है केवल। myfile . नाम की फ़ाइलें खोजने के लिए :
find /home/screw -type f -name myfile
या, केवल निर्देशिका खोजें:
find /home/screw -type d -name myfile
उपलब्ध प्रकार हैं:
b | ब्लॉक (बफर) विशेष |
सी | चरित्र (अनबफर) विशेष |
घ | निर्देशिका |
p | नामित पाइप (फीफो) |
f | नियमित फ़ाइल |
l | प्रतीकात्मक लिंक; यह कभी भी सत्य नहीं है यदि -L विकल्प या -फॉलो विकल्प प्रभावी है, जब तक कि प्रतीकात्मक लिंक टूट न जाए |
s | सॉकेट |
केस संवेदनशीलता
-नाम विकल्प केस सेंसिटिव है - केस सेंसिटिविटी के बिना सर्च करने के लिए -iname . का इस्तेमाल करें :
find /home/screw -iname mYFiLe
वाइल्डकार्ड और रेगेक्स का उपयोग करके एक्सटेंशन द्वारा फ़ाइलें ढूंढें
आप वाइल्डकार्ड का उपयोग कर सकते हैं (* ) फ़ाइल नामों में, जो आपको फ़ाइल एक्सटेंशन द्वारा खोजने की अनुमति देता है:
find -L /home/screw -name '*.pdf'
ऊपर दी गई सभी फ़ाइलों को .pdf . के साथ खोजेगा विस्तार। उद्धृत खोज पैटर्न में रेगेक्स हो सकता है।
फ़ाइलों को नाम या एक्सटेंशन से छोड़ना
-नहीं ऑपरेटर का उपयोग नाम या पैटर्न द्वारा फाइलों को छोड़ने के लिए किया जा सकता है, जो मेल नहीं खाने वाले सभी परिणाम लौटाते हैं:
find /home/screw -type f -not -name '*.pdf'
परिणामों से संपूर्ण निर्देशिकाओं को हटा दें
-छंटनी . का इस्तेमाल करें मेल खाने वाले रास्तों और उनकी सामग्री को छोड़ने का विकल्प। नीचे दिया गया उदाहरण /home/screw/junk . को छोड़ देगा परिणामों से निर्देशिका:
find /home/screw -path /home/screw/junk -prune -o -print
फ़ाइलों को आकार के अनुसार खोजें
यह उदाहरण 500 किलोबाइट से कम की सभी फाइलों की खोज करता है:
find /home/screw -type f -size -500k
यह दो आकार की शर्तों को पार करके 100 और 200 किलोबाइट के बीच की फाइलें ढूंढेगा:
find /home/screw -type f -size +100k -size -200k
आकार के आधार पर खोजने के लिए उपलब्ध इकाइयाँ हैं:
b | 512-बाइट ब्लॉक (यदि कोई प्रत्यय प्रयोग नहीं किया गया है तो यह डिफ़ॉल्ट है) |
सी | बाइट्स |
w | दो-बाइट शब्द |
k | किबिबाइट्स (KiB, 1024 बाइट्स की इकाइयां) |
एम | Mebibytes (MiB, 1024 * 1024 =1048576 बाइट्स की इकाइयां) |
जी | गीबिबाइट्स (GiB, 1024 * 1024 * 1024 =1073741824 बाइट्स की इकाइयां) |
संशोधन या पहुंच तिथि
निम्न उदाहरण में सभी .txt मिलते हैं पिछले 14 दिनों में संशोधित फ़ाइलें:
find /home/screw -name '*.txt' -mtime 14
अंतिम पहुंच द्वारा खोजने के लिए संशोधन . के बजाय दिनांक, -समय . का उपयोग करें -mtime . के बजाय विकल्प ।
आप एक चिन्ह भी जोड़ सकते हैं (+ या – ) दिए गए अंतराल से अधिक या कम संशोधित फ़ाइलों की खोज करने के लिए - यह उदाहरण उन फ़ाइलों को लौटाएगा जिन्हें 14 दिन पहले संशोधित किया गया था।
find /home/screw -name '*.txt' -mtime +14
समय की इकाई के रूप में दिनों के बजाय मिनटों का उपयोग करने के लिए, आप -mmin . को प्रतिस्थापित कर सकते हैं -अमीन -mtime . के बजाय और -समय ।
हमेशा की तरह, मिक्स एंड मैच करने के लिए और भी कई विकल्प हैं, जो सभी मैनुअल में उपलब्ध हैं, जो चलकर उपलब्ध हैं:
man find
स्वामी उपयोगकर्ता/समूह
/home/screw . में रूट के स्वामित्व वाली सभी फाइलों को खोजने के लिए निर्देशिका, चलाएँ:
find /home/screw -user root
अनुमतियां
निम्न आदेश वैश्विक पढ़ने/लिखने की अनुमति के साथ सभी फाइलों को ढूंढेगा:
find /home/screw -perm 777
chmod . पर हमारा लेख देखें आदेश और यह क्या करता है।
संयोजन
खोज अभिव्यक्तियों के किसी भी संयोजन का उपयोग किया जा सकता है। यदि उनके बीच कोई ऑपरेटर शामिल नहीं है, तो यह माना जाएगा कि किसी फ़ाइल के मिलान के लिए दोनों शर्तों को पूरा किया जाना चाहिए (यानी, AND ऑपरेटर डिफ़ॉल्ट है)।
यह उदाहरण 500kb से कम पिछले 14 दिनों में बनाई गई सभी टेक्स्ट फ़ाइलों की खोज करता है:
find /home/screw -name '*.txt' -mtime 14 -type f -size -500k
मिली फाइलों पर कार्रवाइयां
डिफ़ॉल्ट रूप से, खोज कमांड खोज ऑपरेशन परिणामों को प्रिंट करेगा (जैसे -प्रिंट . को कॉल करना कार्रवाई)।
find /home/screw -name myfile -print
परिणाम स्वरूप को अनुकूलित करना
आप किसी भी मिली फ़ाइल के बारे में अतिरिक्त जानकारी शामिल करने के लिए परिणामों के आउटपुट को अनुकूलित कर सकते हैं। यह उदाहरण फ़ाइल का नाम प्रिंट करता है, उसके बाद डैश, उसके बाद फ़ाइल का आकार बाइट्स में:
find /home/screw -name '*.txt' -printf '%f - %s bytes'
फ़ाइल संशोधन और एक्सेस समय के लिए फ़ाइल आकार से अलग-अलग दिनांक फ़ील्ड तक आउटपुट को अनुकूलित करने के लिए कई चर का उपयोग किया जा सकता है - पूरी सूची के लिए मैनुअल देखें।
फ़ाइल में परिणाम लिखना
अपने ढूंढें . के परिणामों को पुनर्निर्देशित करें एक पाठ फ़ाइल के लिए संचालन:
find /home/screw -name myfile > find_results.txt
हटाना
-हटाएं कार्रवाई मेल खाने वाली फ़ाइलों को हटा देगी (बिना पुष्टि के, इसलिए सावधान रहें!):
find /home/screw -name '*.junk' -delete
-exec के साथ कमांड निष्पादित करना / *-निष्पादन *
आप प्रत्येक के विरुद्ध कोई भी शेल कमांड निष्पादित कर सकते हैं ढूंढें -exec . का उपयोग करके परिणाम क्रिया:
find /home/screw -name '*.txt' -exec ls -la {} ';'
-निष्पादन वर्तमान कार्यशील निर्देशिका से कमांड निष्पादित करेगा। मिली फ़ाइल के स्थान से कमांड निष्पादित करने के लिए, उपयोग करें -execdir इसके बजाय:
find /home/screw -name '*.txt' -execdir ls -la {} ';'
उपरोक्त दो उदाहरणों में, ls -la प्रत्येक परिणाम के विरुद्ध चलाया जाता है। घुंघराले ब्रेसिज़ {} खोज आदेश परिणामों से बदल दिया जाएगा, और ';' ls . के लिए कमांड लाइन तर्क समाप्त करता है आदेश दें ताकि ढूंढें जानता है कि वे कहाँ समाप्त होते हैं।
-ठीक के साथ पुष्टि के लिए कहा जा रहा है / -okdir
-ठीक कार्रवाई -exec . की तरह ही काम करती है कार्रवाई, लेकिन यह दिए गए आदेश को चलाने से पहले आपसे पूछता है। यह उपयोगी है यदि आप फ़ाइलों को हटाना चाहते हैं, लेकिन प्रत्येक फ़ाइल को हटाने से पहले पूछा जाए:
find /home/screw -name '*.txt' -ok rm {} ';'
-okdir यह भी संकेत देता है लेकिन मिली फ़ाइल के स्थान से कमांड निष्पादित करता है:
find /home/screw -name '*.txt' -okdir rm {} ';'