मैं कैसे bash में `dir * .mp3` कर सकता हूँ?


3

विंडोज पर मैं जल्दी से एक चलाने के लिए इस्तेमाल किया dir *.mp3 मौजूदा निर्देशिका में एक एमपी एक्सटेंशन के साथ सभी फ़ाइलों को खोजने के लिए। क्या बैश के साथ ऐसा करने का एक समान त्वरित तरीका है? ls कमांड के लिए एक तरीका है लगता है नज़रअंदाज़ करना एक पैटर्न, लेकिन केवल पैटर्न दिखाने के लिए नहीं। मैं कर सकता हूँ find . -maxdepth 1 -iname '*.mp3' या ls|grep -i '\.mp3$' लेकिन इनमें से कोई भी मेरी उंगलियों से आधे सेकंड या उससे कम में नहीं बहता)

कोई जल्दी विकल्प?


ध्यान दें कि यह दुभाषिया (बैश) है जो वाइल्डकार्ड प्रतिस्थापन करता है। इस प्रकार, ls *.mp3 ग्लोबिंग पैटर्न से मेल खाने वाली कितनी फ़ाइलों के आधार पर बहुत लंबी सूची (मेमोरी / कमांड लाइन से बहुत लंबी) हो सकती है। bash वास्तव में कॉल " ls aGoodSong1.mp3 boringSong2.mp3 coolSong.mp3 "(यदि आपके पास वे 3 फाइलें हैं)। एक वर्कअराउंड: ls | grep -i '[.]mp3$' (जहाँ ls सभी फाइलों को सूचीबद्ध करता है और grep केवल .mp3 फ़ाइलों को दिखाता है)
MattBianco

सिर्फ मनोरंजन के लिए, कोशिश करें echo *.mp3
MattBianco

जवाबों:


10

आपने कोशिश की है ls *.mp3?


2
ऊह, एर, यह थोड़ा अजीब है। यह काम करता हैं! मैं हूँ ज़रूर वह पहली चीज थी जब मैंने वापसी की कोशिश की थी। क्या कोई ऐसी स्थिति है जहाँ यह काम नहीं करता है? प्रतिक्रिया देने के लिये धन्यवाद:)
Andy

हां, यह '* .MP3' फाइलें नहीं दिखाएगा। आपको उपयोग करने की आवश्यकता होगी grep -i मामले को नजरअंदाज करने के लिए
kolypto

2
या बस करो ls *.mp3 *.MP3
Paul R

... लेकिन: ls *। [mM] [pP] ३ वसीयत।
JRobert

मैं कुछ समय के लिए इस बारे में पोस्ट करने का अर्थ है शायद यह एक समस्या थी dir /s *.mp3... वैसे भी, एक उत्तर के लिए धन्यवाद!
Andy

0

उस पर ध्यान दें दे घुमा के स्टार वाइल्डकार्ड को कमांड लाइन दुभाषिया द्वारा हल किया जाता है इससे पहले कि स्ट्रिंग्स के परिणामस्वरूप सरणी को कमांड को उचित रूप से पारित किया जाए। पर विंडोज (एक्स-डॉस) कमांड लाइन , स्टार वाइल्डकार्ड को 'जैसा है' कमांड को पास किया जाता है, जिसके बाद उसे दुख का सामना करना पड़ता है। विकिपीडिया ग्लोबिंग प्रविष्टि देखें

यह देखने का प्रयास करें कि वाइल्डकार्ड कैसे व्यवहार करता है:

#!/bin/bash    
# Display all "positional parameters" (as they are called), passed to the script:    
# COUNT is the number of positional paramaters

COUNT=$#    
while [[ $COUNT -gt 0 ]]; do
   echo "'$1'"
   # pop positional argument 1 off the stack of positional arguments
   shift
   let COUNT=$COUNT-1
done
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.