टर्मिनल: मैं एक फ़ाइल खोलने के लिए grep के परिणामों को कैसे पाइप कर सकता हूं


1

मैं करना चाहते हैं grepऔर openसिर्फ एक टर्मिनल आदेश में एक फ़ाइल।

मान लीजिए मैं इस निर्देशिका में हूं:

$ ls
1.txt   2.txt   3.txt   4.txt   5.txt

और मैं खोलना चाहता हूं 3.txt

मुझे लगा कि मैं कर सकता हूं ls | grep 3 | open

लेकिन ऐसा लगता है कि openपाइप इनपुट को स्वीकार नहीं करता है। क्या इसे करने का कोई तरीका है?

जवाबों:


2

कोशिश करो open $(ls | grep 3)। अपनी विशिष्ट आवश्यकताओं के आधार पर, आप grepभाग को छोड़ सकते हैं और सीधे open $(ls *3*)(या यहां तक ​​कि open *3*) का उपयोग कर सकते हैं।


open $(ls *3*)केवल और केवल के बीच अंतर क्या है open *3*?
डेविड एंडरसन

इस मामले में कोई नहीं, अच्छी बात :-)। मुझे लगता है कि ओपी के मन में अधिक जटिल पैटर्न थे।
nohillside

2
प्रो टिप: हमेशा एक जोड़ने --जब ऐसा करने से पहले ग्लोब * ls, rm, openइतने पर और। और कभी भी "-rf" नाम की फाइल्स ना बनाएं ...
Max Ried

पार्स lsफ़ाइल नाम तर्क का निर्माण करने के एक बुरा विचार है। यदि निर्देशिका में पैटर्न / ग्लोब से मेल खाने वाले रिक्त स्थान हैं, तो आप अवांछनीय परिणाम प्राप्त कर सकते हैं।
fd0

1

एक अन्य विकल्प

find . -name "*3*" -exec open {} \;

वर्तमान निर्देशिका से नीचे नाम में 3 के साथ किसी भी फ़ाइल पर खुला चला जाएगा। इस मामले में रिक्त स्थान और बैकस्लैश मायने रखते हैं।

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