ls में कुछ फ़ाइलों को बाहर करें


61

मैं आउटपुट में ls चलाना और कुछ फ़ाइलों को बाहर करना चाहूंगा।

जब मैं निम्नलिखित कमांड चलाता हूं, तो मुझे एक लाइन पर प्रत्येक फाइल मिलती है:

$ ls -1
file1
file2
file3
temp

मैं एक तरह से इस कमांड को चलाना चाहता हूं ताकि यह पता चले

$ ls -1 <insert magic here> temp
file1
file2
file3

जवाबों:


82
ls -I <filename>

-I = फ़ाइल नाम पर ध्यान न दें, अर्थात निर्दिष्ट फ़ाइल को सूचीबद्ध न करें।

एक से अधिक फ़ाइल को अनदेखा करने के लिए प्रत्येक फ़ाइल नाम से पहले -I जोड़ें ।

ls -I file1 -I file2

उदाहरण के लिए, उनके नाम एक्सटेंशन द्वारा फ़ाइलों को अनदेखा करना।

ls -I "*.jpg" -I "*.svg"

4
यदि आप लंबे समय के फॉर्म के विकल्प का उपयोग करते हैं, --ignoreतो आप इसे बढ़ा सकते हैं जैसे कि ग्लोब पैटर्न जैसेls --ignore="file?"ls --ignore="file*"
स्टीलड्राइव

3
आप छोटे पैटर्न के साथ-साथ पैटर्न को उद्धृत करके ग्लोब पैटर्न का उपयोग कर सकते हैं
क्रिया

18

मेरे लिए अगर मैं एक बार उपयोग करता हूं, तो यह काम करता है लेकिन अगर मैं दो बार उपयोग करता हूं तो यह नहीं होता है। जैसे: ls -I *.csvकाम करता है।

लेकिन ls -I *.csv -I *.txtकाम नहीं करता है और इसके बजाय txt फ़ाइलों को लौटाता है।

-इगोर ने मेरे लिए चाल चली । यह वही है जो मुझे चाहिए था और काम किया।

ls -lhrt --ignore="*.gz" --ignore="*.1"

यह मुझे लॉग फ़ोल्डर से फाइलें सूचीबद्ध करेगा जहां यह पुराने बैकअप लॉग को बाहर करता है।


3
पहले फॉर्म में काम करता है ls -I '*.txt'। बिना कारण के काम नहीं करने का कारण शेल विस्तार है, अर्थात आप शेल को छोड़कर सभी सीएसवी फ़ाइलों को सूचीबद्ध करने के लिए बता रहे हैं। वास्तव में क्या हो रहा है कि यह विस्तार के बाद पहली .csv और .1 फ़ाइलों को अनदेखा करता है, लेकिन
अवशेषों को

डबल-कोटिंग ने मेरे लिए भी काम किया। धन्यवाद @verboze
user38537

यह आसान है। धन्यवाद।
फिलिप डेल्टील

6

ls --ignore={"*.jpg","*.png","*.svg"}


4
यह बस तीन --ignoreविकल्पों को पाने के लिए बैश के ब्रेस विस्तार का उपयोग कर रहा है । आप भी इस्तेमाल कर सकते हैं--ignore="*."{jpg,png,svg}
muru

1

मुझे लगता है कि यह आपके द्वारा खोजे जा रहे आउटपुट का उत्पादन करता है:

ls -1 !(temp)

जाहिरा तौर पर , आपको shopt -s extglobकाम करने की आवश्यकता है
(मेरे पास यह सक्षम है, इसलिए मुझे लगता है कि कुछ समय दूर के अतीत में मैंने इसे उपयोगी पाया और इसे सक्षम किया)।

मुझे लगता है कि आप आउटपुट को फ़िल्टर करने के लिए grep का उपयोग कर सकते हैं:

ls -1 | grep -v '^temp$'

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

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