लिनक्स में कुशल फ़ाइल खोज
लिनक्स के साथ काम करते समय, निर्देशिकाओं में फ़ाइलें ढूंढना एक सामान्य और कभी-कभी जटिल कार्य हो सकता है। पुनरावर्ती खोज विधियों और वाइल्डकार्ड मिलान का उपयोग इस प्रक्रिया को महत्वपूर्ण रूप से सुव्यवस्थित कर सकता है। ये उपकरण नौसिखिया और उन्नत दोनों उपयोगकर्ताओं के लिए अमूल्य हैं, जो फ़ाइल प्रबंधन को अधिक कुशल बनाते हैं।
इस गाइड में, हम यह पता लगाएंगे कि विशिष्ट वाइल्डकार्ड पैटर्न के आधार पर वर्तमान निर्देशिका और इसकी उपनिर्देशिकाओं में सभी फ़ाइलों को पुनरावर्ती रूप से कैसे खोजा जाए। चाहे आप बड़े डेटासेट व्यवस्थित कर रहे हों या बस कुछ फ़ाइलों का पता लगाने का प्रयास कर रहे हों, ये विधियाँ आपकी कमांड लाइन दक्षता को बढ़ाएंगी।
आज्ञा | विवरण |
---|---|
find | निर्देशिका पदानुक्रम के भीतर फ़ाइलों और निर्देशिकाओं की खोज करता है |
-name | वाइल्डकार्ड पैटर्न का उपयोग करके फ़ाइलों को उनके नाम से मिलान करता है |
os.walk | ऊपर से नीचे या नीचे से ऊपर चलकर निर्देशिका ट्री में फ़ाइल नाम उत्पन्न करता है |
fnmatch.fnmatch | परीक्षण करें कि फ़ाइल नाम या स्ट्रिंग वाइल्डकार्ड पैटर्न से मेल खाता है या नहीं |
param | PowerShell स्क्रिप्ट और फ़ंक्शंस के लिए पैरामीटर परिभाषित करता है |
Get-ChildItem | एक या अधिक निर्दिष्ट स्थानों में आइटम पुनर्प्राप्त करता है |
-Recurse | कमांड को निर्देशिकाओं के माध्यम से पुनरावर्ती खोज करने का निर्देश देता है |
-Filter | वाइल्डकार्ड अभिव्यक्ति का उपयोग करके आइटम फ़िल्टर करें |
पुनरावर्ती फ़ाइल खोज स्क्रिप्ट की विस्तृत व्याख्या
पहली स्क्रिप्ट किसी दिए गए वाइल्डकार्ड पैटर्न के आधार पर वर्तमान निर्देशिका और उसकी उपनिर्देशिकाओं में फ़ाइलें ढूंढने के लिए शेल स्क्रिप्ट का उपयोग करती है। यह स्क्रिप्ट के दुभाषिया को निर्दिष्ट करने के लिए शेबैंग से शुरू होता है। स्क्रिप्ट तब जांच करती है कि क्या उपयोगकर्ता ने if [ $# -eq 0 ] का उपयोग करके तर्क के रूप में वाइल्डकार्ड पैटर्न प्रदान किया है। यदि नहीं, तो यह उपयोगकर्ता को सही उपयोग के लिए संकेत देता है और बाहर निकल जाता है। यदि कोई पैटर्न प्रदान किया गया है, तो स्क्रिप्ट फ़ाइलों को खोजने के लिए -type f विकल्प के साथ find कमांड का उपयोग करती है और वाइल्डकार्ड पैटर्न से मिलान करने के लिए -name विकल्प का उपयोग करती है। खोज कमांड यूनिक्स-आधारित सिस्टम में फ़ाइलों को पुनरावर्ती रूप से खोजने के लिए अत्यधिक कुशल है। सफल निष्पादन को इंगित करने के लिए स्क्रिप्ट exit 0 के साथ समाप्त होती है।
दूसरी स्क्रिप्ट एक पायथन स्क्रिप्ट है जो वाइल्डकार्ड पैटर्न के आधार पर पुनरावर्ती रूप से फ़ाइलों की खोज करती है। इसकी शुरुआत os और sys मॉड्यूल को आयात करने से होती है, जो ऑपरेटिंग सिस्टम के साथ इंटरैक्ट करने और कमांड-लाइन तर्कों को संभालने के लिए आवश्यक हैं। स्क्रिप्ट जाँचती है कि क्या उपयोगकर्ता ने वाइल्डकार्ड पैटर्न प्रदान किया है; यदि नहीं, तो यह सही उपयोग प्रिंट करता है और बाहर निकल जाता है। os.walk का उपयोग करने से स्क्रिप्ट को डायरेक्टरी ट्री को पार करने की अनुमति मिलती है। पाई गई प्रत्येक फ़ाइल के लिए, fnmatch.fnmatch जाँचता है कि क्या फ़ाइल नाम वाइल्डकार्ड पैटर्न से मेल खाता है, मिलान फ़ाइल पथों को प्रिंट करता है। यह स्क्रिप्ट उन उपयोगकर्ताओं के लिए उपयोगी है जो स्क्रिप्टिंग के लिए पायथन को पसंद करते हैं और उन्हें अपने कोड में अधिक लचीलेपन और पठनीयता की आवश्यकता होती है।
तीसरी स्क्रिप्ट विंडोज़ सिस्टम पर समान कार्य करने के लिए पॉवरशेल का उपयोग करती है। वाइल्डकार्ड पैटर्न के लिए पैरामीटर को परिभाषित करने के लिए स्क्रिप्ट param स्टेटमेंट का उपयोग करती है। यदि पैटर्न प्रदान नहीं किया गया है, तो यह उपयोगकर्ता को सही उपयोग के बारे में संकेत देता है। Get-ChildItem cmdlet, -Recurse ध्वज के साथ मिलकर, निर्दिष्ट स्थानों में आइटम को पुनरावर्ती रूप से पुनर्प्राप्त करता है। -फ़िल्टर पैरामीटर विशिष्ट फ़ाइलों से मिलान करने के लिए वाइल्डकार्ड पैटर्न लागू करता है। यह स्क्रिप्ट विंडोज़ वातावरण में काम करने वाले उपयोगकर्ताओं के लिए आदर्श है, जो फ़ाइलों को कुशलतापूर्वक प्रबंधित करने और खोजने के लिए पावरशेल की शक्तिशाली और बहुमुखी स्क्रिप्टिंग क्षमताओं का लाभ उठाती है।
फाइंड कमांड का उपयोग करके पुनरावर्ती फ़ाइल खोज
लिनक्स में शेल स्क्रिप्टिंग
#!/bin/bash
# Script to recursively find files based on wildcard matching
# Check if the user has provided a wildcard pattern
if [ $# -eq 0 ]
then
echo "Usage: $0 <wildcard-pattern>"
exit 1
fi
# Find and print the files matching the pattern
find . -type f -name "$1"
exit 0
पुनरावर्ती फ़ाइल खोज के लिए पायथन स्क्रिप्ट
पायथन स्क्रिप्टिंग
import os
import sys
# Check if the user has provided a wildcard pattern
if len(sys.argv) != 2:
print("Usage: python script.py <wildcard-pattern>")
sys.exit(1)
# Get the wildcard pattern from the command line argument
pattern = sys.argv[1]
# Walk through the directory tree
for root, dirs, files in os.walk("."):
for file in files:
if fnmatch.fnmatch(file, pattern):
print(os.path.join(root, file))
पुनरावर्ती फ़ाइल खोज के लिए पॉवरशेल स्क्रिप्ट
पॉवरशेल स्क्रिप्टिंग
# Check if the user has provided a wildcard pattern
param (
[string]$pattern
)
if (-not $pattern) {
Write-Host "Usage: .\script.ps1 -pattern '<wildcard-pattern>'"
exit 1
}
# Get the files matching the pattern
Get-ChildItem -Recurse -File -Filter $pattern
पुनरावर्ती फ़ाइल खोज के लिए उन्नत तकनीकें
पहले चर्चा की गई बुनियादी पुनरावर्ती फ़ाइल खोज विधियों के अलावा, कई उन्नत तकनीकें हैं जो लिनक्स पर आपकी फ़ाइल खोज क्षमताओं को बढ़ा सकती हैं। ऐसी ही एक विधि में विशिष्ट टेक्स्ट पैटर्न वाली फ़ाइलों को खोजने के लिए find के साथ संयोजन में grep कमांड का उपयोग करना शामिल है। उदाहरण के लिए, आप find का उपयोग कर सकते हैं। -type f -name "*.txt" -exec grep "search_text" {} + स्ट्रिंग "search_text" वाली सभी टेक्स्ट फ़ाइलों का पता लगाने के लिए। यह उन डेवलपर्स और सिस्टम प्रशासकों के लिए विशेष रूप से उपयोगी है जिन्हें बड़े कोडबेस या लॉग फ़ाइलों को कुशलतापूर्वक खोजने की आवश्यकता होती है।
पुनरावर्ती फ़ाइल खोजों के लिए एक और शक्तिशाली उपकरण fd है, जो ढूँढें का एक सरल, तेज़ और उपयोगकर्ता के अनुकूल विकल्प है। fd समझदार डिफ़ॉल्ट के साथ आता है और एक सहज वाक्यविन्यास प्रदान करता है। उदाहरण के लिए, कमांड fd "पैटर्न" पैटर्न से मेल खाने वाली फ़ाइलों को पुनरावर्ती रूप से खोजेगा, और यह डिफ़ॉल्ट रूप से नियमित अभिव्यक्तियों का समर्थन करता है। इसके अतिरिक्त, fd अपने समानांतर फ़ाइल सिस्टम ट्रैवर्सल के कारण कई परिदृश्यों में ढूंढ से तेज़ है। उपयोगकर्ता के अनुकूल इंटरफेस के साथ उन्नत खोज सुविधाओं की आवश्यकता वाले उपयोगकर्ताओं के लिए, fd एक उत्कृष्ट विकल्प हो सकता है।
पुनरावर्ती फ़ाइल खोज पर सामान्य प्रश्न और उत्तर
- मैं किसी विशिष्ट एक्सटेंशन वाली फ़ाइलों को पुनरावर्ती रूप से कैसे खोजूं?
- कमांड का उपयोग करें ढूंढें। -type f -name "*.extension" जहां "एक्सटेंशन" वह फ़ाइल एक्सटेंशन है जिसे आप ढूंढ रहे हैं।
- क्या मैं उन फ़ाइलों को खोज सकता हूँ जिन्हें पिछले 7 दिनों के भीतर संशोधित किया गया था?
- हां, कमांड फाइंड का उपयोग करें। -पिछले 7 दिनों में संशोधित फ़ाइलें ढूंढने के लिए f -mtime -7 टाइप करें।
- मैं कुछ निर्देशिकाओं को खोज से कैसे बाहर करूँ?
- निर्देशिकाओं को बाहर करने के लिए find के साथ -prune विकल्प का उपयोग करें, उदाहरण के लिए, find । -पथ "./exclude_dir" -प्रून -ओ -टाइप एफ -नाम "*.txt" -प्रिंट।
- क्या फ़ाइलों को उनके आकार के आधार पर खोजना संभव है?
- हां, ढूंढें का उपयोग करें। 100 एमबी से बड़ी फ़ाइलें ढूंढने के लिए - टाइप करें f - साइज़ +100M।
- मैं रेगुलर एक्सप्रेशन से मेल खाने वाले नामों वाली फ़ाइलों की खोज कैसे करूँ?
- ढूंढें का प्रयोग करें। -टाइप करें f -regex ".*पैटर्न.*" रेगुलर एक्सप्रेशन से मेल खाने वाले नामों वाली फ़ाइलों को खोजने के लिए।
- क्या मैं अनेक खोज मानदंड जोड़ सकता हूँ?
- हां, आप ढूंढें विकल्पों का उपयोग करके मानदंड जोड़ सकते हैं, उदाहरण के लिए, ढूंढें। -प्रकार f -नाम "*.txt" -आकार +10एम।
- मैं छिपी हुई फ़ाइलों को पुनरावर्ती रूप से कैसे खोजूँ?
- ढूंढें का उपयोग करें। -छिपी हुई फ़ाइलों को खोजने के लिए f -name ".*" टाइप करें।
- क्या केवल निर्देशिकाओं को सूचीबद्ध करने का कोई तरीका है?
- हां, ढूंढें का उपयोग करें। -सभी निर्देशिकाओं को पुनरावर्ती रूप से सूचीबद्ध करने के लिए d टाइप करें।
- मैं पाई गई फ़ाइलों की संख्या कैसे गिन सकता हूँ?
- जोड़ें | wc -l से ढूंढें कमांड, उदाहरण के लिए, ढूंढें। -प्रकार f -नाम "*.txt" | wc -l.
- क्या मैं खोज की गहराई को सीमित कर सकता हूँ?
- हां, -मैक्सडेप्थ विकल्प का उपयोग करें, उदाहरण के लिए, ढूंढें। -अधिकतम गहराई 2 -खोज को गहराई तक 2 स्तरों तक सीमित करने के लिए f टाइप करें।
पुनरावर्ती फ़ाइल खोज के लिए उन्नत तकनीकें
पहले चर्चा की गई बुनियादी पुनरावर्ती फ़ाइल खोज विधियों के अलावा, कई उन्नत तकनीकें हैं जो लिनक्स पर आपकी फ़ाइल खोज क्षमताओं को बढ़ा सकती हैं। ऐसी ही एक विधि में का उपयोग करना शामिल है grep के साथ संयोजन में आदेश find विशिष्ट पाठ पैटर्न वाली फ़ाइलों को खोजने के लिए। उदाहरण के लिए, आप उपयोग कर सकते हैं find . -type f -name "*.txt" -exec grep "search_text" {} + "search_text" स्ट्रिंग वाली सभी टेक्स्ट फ़ाइलों का पता लगाने के लिए। यह उन डेवलपर्स और सिस्टम प्रशासकों के लिए विशेष रूप से उपयोगी है जिन्हें बड़े कोडबेस या लॉग फ़ाइलों को कुशलतापूर्वक खोजने की आवश्यकता होती है।
पुनरावर्ती फ़ाइल खोजों के लिए एक और शक्तिशाली उपकरण है fd, एक सरल, तेज़ और उपयोगकर्ता के अनुकूल विकल्प find. fd समझदार डिफ़ॉल्ट के साथ आता है और एक सहज वाक्यविन्यास प्रदान करता है। उदाहरण के लिए, आदेश fd "pattern" पैटर्न से मेल खाने वाली फ़ाइलों को पुनरावर्ती रूप से खोजेगा, और यह डिफ़ॉल्ट रूप से नियमित अभिव्यक्तियों का समर्थन करता है। इसके अतिरिक्त, fd से तेज़ है find कई परिदृश्यों में इसके समानांतर फ़ाइल सिस्टम ट्रैवर्सल के कारण। उपयोगकर्ता के अनुकूल इंटरफेस के साथ उन्नत खोज सुविधाओं की आवश्यकता वाले उपयोगकर्ताओं के लिए, fd एक उत्कृष्ट विकल्प हो सकता है.
पुनरावर्ती फ़ाइल खोज पर अंतिम विचार
लिनक्स में पुनरावर्ती फ़ाइल खोज में महारत हासिल करना कुशल फ़ाइल प्रबंधन के लिए महत्वपूर्ण है, विशेष रूप से जटिल निर्देशिका संरचनाओं में। जैसे उपकरणों का लाभ उठाकर find, grep, और जैसे विकल्प fd, उपयोगकर्ता अपनी उत्पादकता में उल्लेखनीय वृद्धि कर सकते हैं। इन आदेशों को समझने और उपयोग करने से समय की बचत हो सकती है और नौसिखिए और अनुभवी दोनों उपयोगकर्ताओं के लिए कार्य सरल हो सकते हैं, जिससे यह सुनिश्चित होता है कि फ़ाइलों का पता लगाना एक सीधी प्रक्रिया बन जाती है।