-L के साथ उपयोग खोजें


34

मेरे पास है

link -> file

मैं करता हूँ

find -L . -name 'link'

और पाओ

./link

ऐसा क्यों है?

आदमी कहता है:

-L: प्रतीकात्मक लिंक का पालन करें। जब फाइलों के बारे में जानकारी की जाँच करता है या प्रिंट करता है, तो उपयोग की गई जानकारी फ़ाइल के गुणों से ली जाएगी, जो लिंक से ही नहीं, लिंक से भी मिलती है (जब तक कि यह ब्रून केन प्रतीकात्मक लिंक नहीं है या खोज फ़ाइल की जांच करने में असमर्थ है। जो लिंक को इंगित करता है)।

जवाबों:


12

इसके साथ -L, यह फ़ाइल के गुणों की जांच करता है - सामग्री या मेटाडेटा, लिंक की नहीं। उदाहरण के लिए -atime, यदि आप उपयोग करते हैं , तो यह atimeफ़ाइल की जाँच करेगा , लिंक की नहीं:

$ find testdir/ -name link -newer testdir/ref
testdir/link
$ find -L testdir/ -name link -newer testdir/ref
$

testdir/linkके बाद बनाया गया था testdir/ref, लेकिन यह जिस फ़ाइल को इंगित करता है वह नहीं था।


1
क्या आप मेरा उदाहरण लेते हुए समझा सकते हैं? जो मैं समझता हूं वह यह है: मेरे उदाहरण में खोज शुरू होती है। यह सामना करता है। यह ./file के पैटर्न 'लिंक' के नाम की तुलना करता है और चूंकि यह मेल नहीं खाता है, इसलिए किसी भी ओ / पी को रिपोर्ट नहीं करना चाहिए। मेरे तर्क में गलत है?
अंकुर अग्रवाल

आपके द्वारा उद्धृत खोज पुस्तिका से, "उपयोग की गई जानकारी उस फ़ाइल के गुणों से ली जाएगी जिस पर लिंक इंगित करता है।" किसी फ़ाइल का नाम उसके गुणों में से एक नहीं है, इसलिए यह अभी भी लिंक के नाम का उपयोग करता है। यह वास्तविक फ़ाइल के नाम से अधिक उपयोगी भी है।
केविन

"फ़ाइल का नाम इसके गुणों में से एक नहीं है" मुझे यह नहीं पता था। फाइलों की ऐसी कोई अन्य विशेषता जिसे गुण नहीं माना जाता है? सच कहूं तो मुझे अभी भी संदेह है और इंतजार करना होगा कि दूसरों को क्या कहना है।
अंकुर अग्रवाल

@Abc के समान, यह नहीं जानता था कि फ़ाइल नाम फ़ाइल गुण नहीं है। मैं किसी भी प्रलेखन और / या मैन पेज (ओं) में जानकारी का यह टुकड़ा कहां पा सकता हूं? कृपया देखें कि मैं फ़ाइल गुणों के बारे में और कहाँ सीख सकता हूँ।
जोकर

34

सामान्य नियम यह है कि यदि कोई कमांड लिंक पर काम करता है (यानी डायरेक्टरी एंट्रीज, जो इनोडर्स की ओर इशारा करती है) तो कमांड सीमांक के बजाय ऑब्जेक्ट को खुद के रूप में मानता है। अन्यथा कमांड उस पर काम करता है जो सिम्लिंक को इंगित करता है। इस cpप्रकार डिफ़ॉल्ट रूप से सहानुभूति का अनुसरण करता है और लिंक द्वारा बताई गई फ़ाइल की सामग्री की प्रतिलिपि बनाता है। लेकिन जब आप cpनिर्दिष्ट करके निर्देशिका प्रविष्टियों से निपटने के लिए कहते हैं -R, तो यह सिम्बलिंक का अनुसरण करना बंद कर देता है। mvहमेशा निर्देशिका प्रविष्टियों के साथ काम करता है, और इसलिए यह कभी भी सहानुभूति का पालन नहीं करता है।

findआदेश के सामान्य गतिविधि निर्देशिका प्रविष्टियों पर संचालित करने के लिए है, इसलिए सिमलिंक डिफ़ॉल्ट रूप से पालन नहीं कर रहे। जोड़ा जा रहा है -Lका कारण बनता है findसभी गुण के लिए सिमलिंक का पालन करने के सिवाय एक, नाम है कि जब निर्देशिका खोज करने नजरअंदाज नहीं किया जा सकता है। इसका एक उद्देश्य find -nameयह है कि जैसे आदेशों के लिए इनपुट प्रदान किया जाए mvऔर rmजो निर्देशिका प्रविष्टियों पर काम करें। यदि उन find -L dir -nameनामों का उत्पादन किया जा सकता है, जो अप्रिय और आश्चर्यजनक परिणाम देते हैं, तो जो निर्देशिका ट्री के बाहर इंगित किया गया है dir


वाह! क्यों इस सूक्ष्म अवधारणा को मानव पृष्ठों पर अच्छी तरह से चित्रित नहीं किया गया है (जब तक कि मैं इसे याद नहीं करता)। यह मेरे लिए एक बड़ा आश्चर्य है।
अंकुर अग्रवाल

2
@ केल जोंस There would be unpleasant and surprising results if -L dir -name` उन नामों का उत्पादन कर सकते हैं जो निर्देशिका वृक्ष के बाहर बताए गए हैं find dir -name pattern। क्योंकि जोड़ने -L बाहरी dir को इंगित करने की अनुमति देता है
टिमोथीकोर

तो cp -Rसिम्लिंक के तहत सामान की प्रतिलिपि कैसे प्राप्त करें?
जावदबा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.