लिनक्स find कमांड सम्पूर्ण गाइड

अवलोकन

लिनक्स परिवेश में आवश्यक फ़ाइलों को तेज़ी से खोजना और संसाधित करना सर्वर प्रबंधन और विकास के लिए एक बुनियादी तथा अनिवार्य कौशल है। इस लेख में, हम व्यावहारिक अभ्यासों के माध्यम से चरण-दर-चरण find कमांड के बुनियादी खोज विकल्पों से लेकर फ़ाइल आकार और संशोधन समय पर आधारित खोज, तथा खोज परिणामों पर बैच संचालन (-exec) तक सब कुछ सीखेंगे।

अभ्यास परिवेश सेटअप और फ़ाइल नाम आधारित बुनियादी खोज

find कमांड अभ्यास के लिए एक समर्पित डायरेक्टरी बनाने और उस स्थान पर जाने के लिए mkdir -p ~/find_lab/docs ~/find_lab/logs ~/find_lab/backup && cd ~/find_lab कमांड चलाएं।

mkdir -p ~/find_lab/docs ~/find_lab/logs ~/find_lab/backup && cd ~/find_lab

खोज परीक्षण के लिए विभिन्न एक्सटेंशन वाली नमूना फ़ाइलें बनाने के लिए touch docs/app.log docs/guide.txt logs/error.log logs/access.log backup/data.bak कमांड चलाएं।

touch docs/app.log docs/guide.txt logs/error.log logs/access.log backup/data.bak

find कमांड निर्दिष्ट डायरेक्टरी पथ के तहत सभी फ़ाइलों और डायरेक्टरीज़ को दी गई शर्तों के आधार पर पुनरावर्ती (recursively) रूप से खोजता है।
find . -name "*.log" कमांड चलाने पर, यह वर्तमान डायरेक्टरी (.) के आधार पर .log एक्सटेंशन के साथ समाप्त होने वाली सभी फ़ाइलों को खोजता है और उनके पथ के साथ आउटपुट प्रदर्शित करता है।
इस प्रक्रिया में, शेल द्वारा वाइल्डकार्ड वर्ण (*) के प्रारंभिक विस्तार को रोकने के लिए खोज पैटर्न को दोहरे उद्धरण चिह्नों (double quotes) में संलग्न करके निर्दिष्ट किया जाता है।
⚙️ [मुख्य विकल्प]

-name : केस-संवेदी (case-sensitive) तरीके से निर्दिष्ट फ़ाइल नाम या पैटर्न से मेल खाने वाले आइटम खोजता है।
-iname : केस-असंवेदी (case-insensitive) तरीके से फ़ाइल नाम या पैटर्न से मेल खाने वाले आइटम खोजता है।
-type : खोजी जाने वाली फ़ाइल का प्रकार निर्दिष्ट करता है (f सामान्य फ़ाइल के लिए, d डायरेक्टरी के लिए)।
-size : फ़ाइल आकार के आधार पर खोजता है (+ से अधिक के लिए, - से कम के लिए)।
-mtime : फ़ाइल सामग्री संशोधित होने के समय (दिनों में) के आधार पर खोजता है।
-empty : रिक्त फ़ाइलों या रिक्त डायरेक्टरीज़ को खोजता है।
-exec : खोजी गई प्रत्येक फ़ाइल पर निर्दिष्ट लिनक्स कमांड को बैच में निष्पादित करता है।
-delete : खोज मानदंडों से मेल खाने वाली फ़ाइलों को तुरंत हटा देता है।

find . -name “*.log”

केस पर ध्यान दिए बिना फ़ाइल नाम खोजने के लिए -iname विकल्प का उपयोग करते हुए find . -iname "GUIDE.TXT" कमांड चलाएं।
भले ही वास्तविक फ़ाइल नाम लोअरकेस में guide.txt हो, यह अपरकेस खोज स्थिति से मेल खाता है और फ़ाइल पथ सही ढंग से खोजा जाता है।

find . -iname “GUIDE.TXT”

फ़ाइल प्रकार और आकार के आधार पर बड़ी फ़ाइलें खोजना

फ़ाइल आकार स्थिति खोज का परीक्षण करने के लिए, 15MB आकार की एक बड़ी नमूना फ़ाइल बनाने हेतु truncate -s 15M ~/find_lab/backup/large_archive.iso कमांड चलाएं।

truncate -s 15M ~/find_lab/backup/large_archive.iso

अतिरिक्त आकार तुलना अभ्यास के लिए, 2MB आकार की एक नमूना लॉग फ़ाइल बनाने हेतु truncate -s 2M ~/find_lab/logs/big_trace.log कमांड चलाएं।

truncate -s 2M ~/find_lab/logs/big_trace.log

सामान्य फ़ाइलों को छोड़कर केवल डायरेक्टरी पथों को फ़िल्टर और खोजने के लिए, -type d विकल्प लागू करते हुए find ~/find_lab -type d कमांड चलाएं।
निर्दिष्ट पथ के अंतर्गत मौजूद केवल सभी डायरेक्टरीज़ की सूची स्पष्ट रूप से आउटपुट में दिखाई देगी।

find ~/find_lab -type d

सामान्य फ़ाइलों (-type f) में से 10MB से अधिक आकार वाली बड़ी फ़ाइलों (-size +10M) को खोजने और उनकी विस्तृत जानकारी जांचने के लिए find ~/find_lab -type f -size +10M -exec ls -lh {} + कमांड चलाएं।
शर्त से मेल खाने वाली 15MB आकार की large_archive.iso फ़ाइल खोजी जाती है और विस्तृत अनुमतियों तथा आकार जानकारी के साथ प्रदर्शित की जाती है।

find ~/find_lab -type f -size +10M -exec ls -lh {} +

समय स्थिति (mtime/mmin) पर आधारित परिवर्तित फ़ाइलें खोजना

समय बीतने के आधार पर फ़ाइल खोज का अभ्यास करने के लिए, दो दिन पहले संशोधित की गई एक पुरानी नमूना फ़ाइल बनाने हेतु touch -d "2 days ago" ~/find_lab/backup/old_backup.tar कमांड चलाएं।

touch -d “2 days ago” ~/find_lab/backup/old_backup.tar

हाल ही में संशोधित नवीनतम फ़ाइलों की खोज का परीक्षण करने के लिए, वर्तमान समय के टाइमस्टैम्प वाली एक नमूना फ़ाइल बनाने हेतु touch ~/find_lab/logs/recent.log कमांड चलाएं।

touch ~/find_lab/logs/recent.log

पिछले 24 घंटों के भीतर संशोधित सामान्य फ़ाइलों को खोजने के लिए, -mtime -1 विकल्प लागू करते हुए find ~/find_lab -type f -mtime -1 कमांड चलाएं।
मानक समय (24 घंटे) के भीतर बनाई या संशोधित की गई सभी फ़ाइलों की सूची सही ढंग से आउटपुट होती है।

find ~/find_lab -type f -mtime -1

संशोधित हुए 24 घंटे (1 दिन) से अधिक पुरानी फ़ाइलों को खोजने के लिए, -mtime +1 विकल्प लागू करते हुए find ~/find_lab -type f -mtime +1 कमांड चलाएं।
दो दिन पहले की तिथि के साथ बनाई गई केवल old_backup.tar फ़ाइल ही सटीक रूप से फ़िल्टर होकर प्रदर्शित होती है।

find ~/find_lab -type f -mtime +1

खोज परिणामों का बैच नियंत्रण: -exec विकल्प और विलोपन प्रसंस्करण

बैच नियंत्रण और अनुमति संशोधन का अभ्यास करने के लिए, एक अस्थायी डायरेक्टरी बनाने और नमूना अस्थायी फ़ाइलें जनरेट करने हेतु mkdir -p ~/find_lab/temp && touch ~/find_lab/temp/cache1.tmp ~/find_lab/temp/cache2.tmp कमांड चलाएं।

mkdir -p ~/find_lab/temp && touch ~/find_lab/temp/cache1.tmp ~/find_lab/temp/cache2.tmp

खोजी गई सभी .tmp एक्सटेंशन फ़ाइलों की एक्सेस अनुमतियों को एक साथ 644 में बदलने के लिए, -exec विकल्प लागू करते हुए find ~/find_lab/temp -name "*.tmp" -exec chmod 644 {} \; कमांड चलाएं।
{} प्रतीक खोजी गई प्रत्येक व्यक्तिगत फ़ाइल के पथ से प्रतिस्थापित होता है, और \; -exec सिंटैक्स में दिए गए कमांड के अंत को निर्दिष्ट करता है।

find ~/find_lab/temp -name “*.tmp” -exec chmod 644 {} ;

अनुमति संशोधन कार्य ठीक से लागू हुआ है या नहीं, यह सत्यापित करने के लिए ls -l ~/find_lab/temp कमांड चलाएं।
आउटपुट परिणाम में, आप पुष्टि कर सकते हैं कि दोनों अस्थायी फ़ाइलों को पढ़ने और लिखने की अनुमति (-rw-r--r--, 644) में संशोधित कर दिया गया है।

ls -l ~/find_lab/temp

खोज मानदंडों से मेल खाने वाली .tmp फ़ाइलों को एक साथ हटाने के लिए, rm -f कमांड को जोड़ते हुए find ~/find_lab/temp -name "*.tmp" -exec rm -f {} \; कमांड चलाएं।
बिना किसी अतिरिक्त पुष्टिकरण प्रक्रिया के, लक्षित खोजी गई फ़ाइलें एक ही बार में हटा दी जाती हैं।

find ~/find_lab/temp -name “*.tmp” -exec rm -f {} ;

सभी अस्थायी फ़ाइलें सफलतापूर्वक हटा दी गई हैं या नहीं, इसकी अंतिम पुष्टि करने के लिए ls -la ~/find_lab/temp कमांड चलाएं।
केवल वर्तमान डायरेक्टरी (.) और पैरेंट डायरेक्टरी (..) शेष रह जाती हैं, और बनाई गई सभी अस्थायी फ़ाइलें पूरी तरह से हटा दी गई स्थिति को दर्शाती हैं।

ls -la ~/find_lab/temp

अब तक, हमने लिनक्स find कमांड के मुख्य खोज विकल्पों से लेकर व्यावहारिक कार्यों में सीधे उपयोग की जा सकने वाली बैच प्रोसेसिंग तकनीकों तक संक्षेप में समीक्षा की है।
अपनी आवश्यकताओं के अनुसार बताए गए विकल्पों को मिलाकर फ़ाइल खोज और प्रबंधन कार्यों को और अधिक कुशल बनाएं।