W systemie Windows szybko uruchamiałem a, dir *.mp3
aby znaleźć wszystkie pliki z rozszerzeniem mp3 w bieżącym katalogu. Czy istnieje podobnie szybki sposób na bash? ls
Polecenia wydaje się mieć drogę do ignorowania wzór, ale nie pokazują tylko wzór. Mogę zrobić find . -maxdepth 1 -iname '*.mp3'
albo ls|grep -i '\.mp3$'
, ale żadna z nich nie wypływa z moich palców w pół sekundy lub mniej)
Jakieś szybsze alternatywy?
ls *.mp3
może spowodować powstanie bardzo długiej listy (zbyt długiej pamięci / wiersza poleceń), w zależności od liczby plików pasujących do wzorca globowania.bash
faktycznie wywołuje „ls aGoodSong1.mp3 boringSong2.mp3 coolSong.mp3
” (jeśli masz te 3 pliki). Obejście:ls | grep -i '[.]mp3$'
(gdzie ls wyświetla wszystkie pliki, a grep pokazuje tylko pliki .mp3)echo *.mp3
Odpowiedzi:
Próbowałeś
ls *.mp3
?źródło
grep -i
, aby zignorować przypadekls *.mp3 *.MP3
dir /s *.mp3
... tak czy inaczej, dzięki za odpowiedź!Zauważ, że w bash , symbol wieloznaczny gwiazdy jest rozstrzygany przez interpreter wiersza poleceń, zanim wynikowa tablica ciągów znaków jest następnie przekazywana do właściwego polecenia. W wierszu poleceń systemu Windows (ex-DOS) symbol wieloznaczny gwiazdy jest przekazywany do polecenia „tak jak jest”, które następnie niestety musi sobie z tym poradzić. Zobacz wpis w Wikipedii dotyczący globowania
Spróbuj tego, aby zobaczyć, jak zachowuje się symbol wieloznaczny:
źródło