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 -1b
radzi sobie z ucieczkami, ale jak mam je wyciąć .mp3
na końcu?
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 -1b
radzi sobie z ucieczkami, ale jak mam je wyciąć .mp3
na końcu?
Odpowiedzi:
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).
Mam to do pracy ls -1b | sed s/\.mp3//
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ż tr
jest wykonalna opcja?
.
).ls -la
nadal wyświetla informacje, po prostu brak części nazwy pliku