मैक टर्मिनल "खोज" कमांड: परिणाम आउटपुट में एक डबल स्लैश का क्या मतलब है?


9

मैं बड़े और नेस्टेड निर्देशिका-संरचनाओं में खोज के लिए खोज-कमांड का उपयोग करता हूं।

परिणाम-आउटपुट में कभी-कभी एक डबल-स्लेश (//) शामिल होता है।

उदाहरण ("डाउनलोड" के बाद):

#> find ~/Downloads/ -iregex ".*some.*"
/Users/michael/Downloads//subDirectory/some_file.pdf

मैंने पहले सोचा था कि यह वर्तमान कार्य-निर्देशिका को चिह्नित करेगा। लेकिन ऐसा नहीं है।

इस दोहरे-स्लैश का अर्थ क्या है?

आमतौर पर मैं परिणाम को क्लिपबोर्ड में कॉपी करता हूं, खोजक में बदलता हूं। फिर "शिफ्ट" + "कमांड" + "जी" और बॉक्स में पथ (फ़ाइल तक) चिपकाते हुए। ताकि युक्त निर्देशिका खोली जाए।

ठीक काम करता है। लेकिन डबल-स्लैश मुझे मैन्युअल रूप से निकालना होगा।

इसलिए: मैं इससे कैसे बच सकता हूँ?


2
ध्यान दें कि आपको डबल स्लैश नहीं निकालना है। एक डबल स्लैश केवल एक पथ की शुरुआत में विशेष है , और केवल अगर यह दो स्लैश है। बीच में या अंत में कई स्लैश या शुरुआत में दो की तुलना में स्लैश की कोई संख्या बिल्कुल एक स्लैश के बराबर होती है। यह POSIX / SUS विनिर्देशन द्वारा गारंटीकृत है।
जोर्ग डब्ल्यू मित्तग

जवाबों:


17

findबल्कि शाब्दिक है। जब आप इसे "~ / डाउनलोड /" के भीतर खोजने के लिए कहते हैं, तो यह जो कुछ भी पाता है उसके लिए उपसर्ग के रूप में (अनुगामी स्लैश सहित) का उपयोग करता है। चूंकि आपके द्वारा दिए गए पथ के अंत में एक अनावश्यक और अप्रासंगिक स्लैश है, इसलिए आप आउटपुट में एक अनावश्यक और अप्रासंगिक अतिरिक्त स्लैश के साथ हवा करते हैं।

समाधान: खोज निर्देशिका से अनुगामी "/" निकालें:

#> find ~/Downloads/ -iregex ".*some.*"
/Users/michael/Downloads//subDirectory/some_file.pdf
#> find ~/Downloads -iregex ".*some.*"
/Users/michael/Downloads/subDirectory/some_file.pdf

4

इस दोहरे-स्लैश का अर्थ क्या है?

इसका मतलब है कि आप अजीब पुरानी बीएसडी खोज का उपयोग कर रहे हैं।

मैं इससे कैसे बच सकता हूं?

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

इसके बजाय, मैं इन अन्य चीजों में से एक करने का सुझाव देता हूं:

a) उस पाइप को sed करने के लिए एक आवरण बनाएं: | sed 's @ // @ / @'

ख) 'काढ़ा स्थापित खोजक' के साथ जीएनयू के खोजक को स्थापित करें और फिर या तो सीधे 'gfind' का उपयोग करें, उपनाम 'खोजने के लिए' gfind ', या जोड़ / usr / स्थानीय / ऑप्ट / खोज / / libexec / gnubin अपने पथ (जो भी जोड़ता है) GNU खोज '' पता लगाएं ',' अद्यतन ', और' xargs ')।

ग) एक उचित GNU / Linux OS पर स्विच करें जिसमें पहली बार में यह समस्या (और एक हजार अन्य) नहीं हुई होगी। : p


1
बस set mark-directories offअपने को जोड़ो। inputrcऔर तुम जाने के लिए अच्छा हो उन पुराने बीएसडी वालों में से एक से।
fd0

@ fd0 तो एक ही नाम के साथ dirs और फ़ाइलों के बीच अंतर करने में सक्षम नहीं होगा; यह बीएसडी का पता है कि यहां थोड़ा सा संकट है, बकवास या रीडलाइन नहीं
जनवरी क्यू पेबलिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.