खेल के मैदान में वापसी
डालने का समय आ गया है खोज कुछ (लगभग) व्यावहारिक उपयोग के लिए। हम एक खेल का मैदान तैयार करेंगे और जो कुछ हमने सीखा है उसे आजमाएंगे।
सबसे पहले, आइए ढेर सारी उपनिर्देशिकाओं और फाइलों के साथ एक खेल का मैदान बनाएं:
[मुझे@लिनक्सबॉक्स ~]$ एमकेडीआईआर-पी प्लेग्राउंड/डीआईआर-{001..100}
[मुझे@लिनक्सबॉक्स ~]$ टच प्लेग्राउंड/डीआईआर-{001..100}/फाइल-{ए..जेड}
[मुझे@लिनक्सबॉक्स ~]$ एमकेडीआईआर-पी प्लेग्राउंड/डीआईआर-{001..100}
[मुझे@लिनक्सबॉक्स ~]$ टच प्लेग्राउंड/डीआईआर-{001..100}/फाइल-{ए..जेड}
कमांड लाइन की शक्ति में चमत्कार! इन दो पंक्तियों के साथ, हमने एक खेल का मैदान निर्देशिका बनाई जिसमें 100 उपनिर्देशिकाएँ हैं जिनमें से प्रत्येक में 26 खाली फाइलें हैं। जीयूआई के साथ कोशिश करो!
इस जादू को पूरा करने के लिए हमने जो तरीका अपनाया है उसमें एक परिचित कमांड शामिल है (mkdir), एक विदेशी खोल विस्तार (ब्रेसिज़) और एक नया आदेश, स्पर्श। जोड़ने से mkdir साथ -p विकल्प (जिसके कारण mkdir निर्दिष्ट पथों की मूल निर्देशिका बनाने के लिए) ब्रेस विस्तार के साथ, हम 100 उपनिर्देशिकाएँ बनाने में सक्षम थे।
RSI स्पर्श कमांड का उपयोग आमतौर पर फाइलों के समय को एक्सेस करने, बदलने और संशोधित करने के लिए सेट या अपडेट करने के लिए किया जाता है। हालाँकि, यदि फ़ाइल नाम तर्क एक गैर-मौजूद फ़ाइल का है, तो एक खाली फ़ाइल बनाई जाती है।
हमारे खेल के मैदान में, हमने नाम की एक फ़ाइल के 100 उदाहरण बनाए फ़ाइल-ए. आइए उन्हें ढूंढते हैं:
[मुझे@लिनक्सबॉक्स ~]$ खेल का मैदान खोजें - टाइप f -नाम 'फाइल-ए'
[मुझे@लिनक्सबॉक्स ~]$ खेल का मैदान खोजें - टाइप f -नाम 'फाइल-ए'
ध्यान दें कि विपरीत ls, खोज क्रमबद्ध क्रम में परिणाम नहीं देता है। इसका क्रम स्टोरेज डिवाइस के लेआउट द्वारा निर्धारित किया जाता है। हम पुष्टि कर सकते हैं कि हमारे पास वास्तव में फ़ाइल के 100 उदाहरण इस प्रकार हैं:
[मुझे@लिनक्सबॉक्स ~]$ खेल का मैदान ढूंढें - प्रकार f -नाम 'फ़ाइल-ए' | डब्ल्यूसी-एल
100
[मुझे@लिनक्सबॉक्स ~]$ खेल का मैदान ढूंढें - प्रकार f -नाम 'फ़ाइल-ए' | डब्ल्यूसी-एल
100
इसके बाद, आइए फाइलों को उनके संशोधन समय के आधार पर खोजने पर ध्यान दें। बैकअप बनाते समय या कालानुक्रमिक क्रम में फ़ाइलों को व्यवस्थित करते समय यह सहायक होगा। ऐसा करने के लिए, हम पहले एक संदर्भ फ़ाइल बनाएंगे जिसके विरुद्ध हम संशोधन समय की तुलना करेंगे:
[मुझे@लिनक्सबॉक्स ~]$ खेल का मैदान/टाइमस्टैम्प स्पर्श करें
[मुझे@लिनक्सबॉक्स ~]$ खेल का मैदान/टाइमस्टैम्प स्पर्श करें
यह नाम की एक खाली फ़ाइल बनाता है टाइमस्टैम्प और इसके संशोधन समय को वर्तमान समय पर सेट करता है। हम एक अन्य आसान कमांड का उपयोग करके इसे सत्यापित कर सकते हैं, स्टेट, जो एक प्रकार का सूप-अप संस्करण है ls। स्टेट कमांड वह सब प्रकट करता है जो सिस्टम समझता है
एक फ़ाइल और उसकी विशेषताओं के बारे में:
[मुझे@लिनक्सबॉक्स ~]$ स्टेट प्लेग्राउंड/टाइमस्टैम्प
फ़ाइल: `खेल का मैदान/टाइमस्टैम्प'
आकार: 0 ब्लॉक: 0 आईओ ब्लॉक: 4096 नियमित खाली फ़ाइल डिवाइस: 803h/2051d इनोड: 14265061 लिंक: 1
एक्सेस: (0644/-आरडब्ल्यू-आर--आर--) यूआईडी: (1001/मी) गिड: (1001/मी) एक्सेस: 2016-10-08 15:15:39.000000000 -0400
Modify: 2016-10-08 15:15:39.000000000 -0400
Change: 2016-10-08 15:15:39.000000000 -0400
[मुझे@लिनक्सबॉक्स ~]$ स्टेट प्लेग्राउंड/टाइमस्टैम्प
फ़ाइल: `खेल का मैदान/टाइमस्टैम्प'
आकार: 0 ब्लॉक: 0 आईओ ब्लॉक: 4096 नियमित खाली फ़ाइल डिवाइस: 803h/2051d इनोड: 14265061 लिंक: 1
एक्सेस: (0644/-आरडब्ल्यू-आर--आर--) यूआईडी: (1001/मी) गिड: (1001/मी) एक्सेस: 2016-10-08 15:15:39.000000000 -0400
Modify: 2016-10-08 15:15:39.000000000 -0400
Change: 2016-10-08 15:15:39.000000000 -0400
यदि हम स्पर्श फ़ाइल को फिर से देखें और फिर इसकी जांच करें स्टेट, हम देखेंगे कि फ़ाइल का समय अपडेट कर दिया गया है:
[मुझे@लिनक्सबॉक्स ~]$ खेल का मैदान/टाइमस्टैम्प स्पर्श करें
[मुझे@लिनक्सबॉक्स ~]$ स्टेट प्लेग्राउंड/टाइमस्टैम्प
फ़ाइल: `खेल का मैदान/टाइमस्टैम्प'
आकार: 0 ब्लॉक: 0 आईओ ब्लॉक: 4096 नियमित खाली फ़ाइल डिवाइस: 803h/2051d इनोड: 14265061 लिंक: 1
एक्सेस: (0644/-आरडब्ल्यू-आर--आर--) यूआईडी: (1001/मी) गिड: (1001/मी) एक्सेस: 2016-10-08 15:23:33.000000000 -0400
Modify: 2016-10-08 15:23:33.000000000 -0400
Change: 2016-10-08 15:23:33.000000000 -0400
[मुझे@लिनक्सबॉक्स ~]$ खेल का मैदान/टाइमस्टैम्प स्पर्श करें
[मुझे@लिनक्सबॉक्स ~]$ स्टेट प्लेग्राउंड/टाइमस्टैम्प
फ़ाइल: `खेल का मैदान/टाइमस्टैम्प'
आकार: 0 ब्लॉक: 0 आईओ ब्लॉक: 4096 नियमित खाली फ़ाइल डिवाइस: 803h/2051d इनोड: 14265061 लिंक: 1
एक्सेस: (0644/-आरडब्ल्यू-आर--आर--) यूआईडी: (1001/मी) गिड: (1001/मी) एक्सेस: 2016-10-08 15:23:33.000000000 -0400
Modify: 2016-10-08 15:23:33.000000000 -0400
Change: 2016-10-08 15:23:33.000000000 -0400
अगला, उपयोग करते हैं खोज हमारी कुछ खेल के मैदान की फाइलों को अपडेट करने के लिए:
[मुझे@लिनक्सबॉक्स ~]$ खेल का मैदान खोजें - प्रकार f -नाम 'फ़ाइल-बी' -निष्पादन स्पर्श '{}' ';'
[मुझे@लिनक्सबॉक्स ~]$ खेल का मैदान खोजें - प्रकार f -नाम 'फ़ाइल-बी' -निष्पादन स्पर्श '{}' ';'
यह नाम के खेल के मैदान में सभी फाइलों को अपडेट करता है फ़ाइल-बी. आगे हम उपयोग करेंगे खोज सभी फाइलों की संदर्भ फाइल से तुलना करके अद्यतन फाइलों की पहचान करने के लिए टाइमस्टैम्प:
[मुझे@लिनक्सबॉक्स ~]$ खेल का मैदान खोजें - प्रकार f -नया खेल का मैदान / टाइमस्टैम्प
[मुझे@लिनक्सबॉक्स ~]$ खेल का मैदान खोजें - प्रकार f -नया खेल का मैदान / टाइमस्टैम्प
परिणामों में के सभी 100 उदाहरण शामिल हैं फ़ाइल-बी. चूंकि हमने प्रदर्शन किया a स्पर्श नाम के खेल के मैदान की सभी फाइलों पर फ़ाइल-बी हमारे द्वारा अपडेट किए जाने के बाद टाइमस्टैम्प, वे अब . से "नए" हैं टाइमस्टैम्प और इस प्रकार के साथ पहचाना जा सकता है -नया परीक्षण.
अंत में, आइए हम पहले किए गए खराब अनुमति परीक्षण पर वापस जाएं और इसे लागू करें
[मुझे@लिनक्सबॉक्स ~]$ खेल का मैदान खोजें \( -टाइप f -not -perm 0600 \) -या \(
-टाइप डी-नॉट-पर्म 0700 \)
[मुझे@लिनक्सबॉक्स ~]$ खेल का मैदान खोजें \( -टाइप f -not -perm 0600 \) -या \(
-टाइप डी-नॉट-पर्म 0700 \)
यह कमांड सभी 100 निर्देशिकाओं और 2600 फाइलों को सूचीबद्ध करता है खेल का मैदान (साथ ही साथ टाइमस्टैम्प और खेल का मैदान स्वयं, कुल 2702 के लिए) क्योंकि उनमें से कोई भी "अच्छी अनुमति" की हमारी परिभाषा को पूरा नहीं करता है। ऑपरेटरों और कार्यों के बारे में हमारे ज्ञान के साथ, हम अपने खेल के मैदान में फाइलों और निर्देशिकाओं के लिए नई अनुमतियां लागू करने के लिए इस आदेश में क्रियाएं जोड़ सकते हैं:
[मुझे@लिनक्सबॉक्स ~]$ खेल का मैदान खोजें \(-प्रकार f -not -perm 0600 -exec chmod 0600 '{}' ';' \) -या \( -type d -not -perm 0700 -exec chmod 0700 '{}' ';' \)
[मुझे@लिनक्सबॉक्स ~]$ खेल का मैदान खोजें \(-प्रकार f -not -perm 0600 -exec chmod 0600 '{}' ';' \) -या \( -type d -not -perm 0700 -exec chmod 0700 '{}' ';' \)
दिन-प्रतिदिन के आधार पर, हमें दो कमांड जारी करना आसान हो सकता है, एक निर्देशिका के लिए और एक फाइलों के लिए, इस एक बड़े कंपाउंड कमांड के बजाय, लेकिन यह जानकर अच्छा लगा कि हम इसे ऐसा कर सकते हैं रास्ता। यहां महत्वपूर्ण बिंदु यह समझना है कि उपयोगी कार्यों को करने के लिए ऑपरेटरों और क्रियाओं का एक साथ उपयोग कैसे किया जा सकता है।