LS, ale wykluczają przyrostki

0

Mam pliki

foo.mp3

bar baz.mp3

bar baz 2.mp3

Jakie polecenie wyświetli następujące polecenie?

bla

bar \ baz

bar \ baz \ 2

Wiem, że ls -1bradzi sobie z ucieczkami, ale jak mam je wyciąć .mp3na końcu?

averagejoey2000
źródło

Odpowiedzi:

0

ls -1 | cut -d "." -f 1

odcina pierwszy okres i wszystko po nim. Traktuje kropki jako separator i wyświetla tylko tekst w pierwszym polu, przed każdym wystąpieniem separatora. Jeśli twoje nazwy plików mają maksymalnie tylko jedno rozszerzenie (zero lub jeden okres łącznie), może to działać (tak proste).

ls -1b | cut -d "." -f 1

zamienia spacje na „\” w systemie Linux. Pamiętaj jednak, że w tym pytaniu masz również tag Unix. I opcja „-b” w „ls” niekoniecznie jest obsługiwana przez wszystkie odmiany Uniksa. (Nie jest obsługiwany tak szeroko jak -l (długi) lub -1 (pojedyncza kolumna).

TOOGAM
źródło
Powoduje to również wycinanie ukrytych plików (zaczynających się od a .). ls -lanadal wyświetla informacje, po prostu brak części nazwy pliku
Xen2050
1

Mam to do pracy ls -1b | sed s/\.mp3//

averagejoey2000
źródło
Upvoting. Uznałem, że jest lepszy sposób, ale wtedy byłem bardziej zainteresowany udzieleniem użytecznej odpowiedzi od razu. ls -1 | sed s/\\.mp3$//działa ładnie. $ Pomaga wyeliminować wykluczenie „.mp3.zip”, a dwa ukośniki odwrotne powinny być użyte, jeśli twoja powłoka używa ukośnika odwrotnego jako znaku ucieczki, co jest powszechne w Uniksie. Jedynym minusem jest to, że sed jest obsługiwany przez mniej różnych uniksowych wersji, ale sed jest dość powszechny i ​​warto go zdobyć. Czy też trjest wykonalna opcja?
TOOGAM