मैं एक फ़ाइल ढूंढना चाहता हूं और फिर उसमें निर्देशिका दर्ज कर सकता हूं। मैंने कोशिश की find /media/storage -name "Fedora" | xargs cdलेकिन निश्चित रूप से, मैं is not a directoryत्रुटि।
एक पंक्ति कमांड के साथ मैं इसकी मूल निर्देशिका कैसे दर्ज करूं?
shopt -s globstar, आप कर सकते हैं cd /media/storage/**/Fedora, लेकिन यह पहले मैच में ग्लोब का मूल्यांकन करना बंद नहीं करता है (इसलिए यह स्टीलड्राइवर के समाधान की तुलना में धीमा है। इंटरैक्टिव उपयोग के लिए, मैं सामान्य रूप से माउस के लिए क्या करूंगा और निर्देशिका नाम को कॉपी / पेस्ट करूंगा,) (और alt + बैकस्पेस आवश्यकतानुसार पीछे आने वाले पथ घटकों को हटाने के लिए आवश्यक था), लेकिन अगर आप ऐसा करते हैं तो मुझे लगता है कि शेल फ़ंक्शन बनाने लायक हो सकता है।
xargs cdसंभवतः काम नहीं कर सकता। cdकेवल शेल बिल्ड के रूप में काम कर सकता है, क्योंकि इसे शेल के संदर्भ को संशोधित करना होगा। ऐसा कोई तरीका नहीं xargsहै जिससे बच्चा प्रक्रिया कर सके। IDK अगर ऐसा है तो आप "कोर्स" से मतलब है, या यदि जिस मार्ग में findप्रिंट होते हैं, उसमें रिक्त स्थान होते हैं, जो xargs द्वारा विभाजित होते हैं क्योंकि आपने उपयोग नहीं किया था -d \nया कुछ भी नहीं। या find -exec {} \;।
cdउस तरह नहीं चल सकते । cdमें बनाया गया एक बैश है, यदि cdएक अलग कमांड होता, तो यह बदल जाता (उसका अपना) डायर, और फिर छोड़ दिया (आपको शेल में वापस लौटा, जो पहले की तरह उसी स्थिति में है, डायर का कोई परिवर्तन नहीं)।