Próbowałem otworzyć wszystkie moje pliki .mp3 z folderu przy użyciu, xdg-open
ale odkryłem, że otwiera tylko jeden! Więc trochę szukałem, ale nie było takiego pytania! Znalazłem „evince”, ale najwyraźniej otwiera on pliki tekstowe, a gnome-open również otwiera jeden plik.
Chcę otworzyć wszystkie pliki tego samego formatu w folderze z terminala. Jestem nowy w Ubuntu, więc proszę wyjaśnij trochę więcej.
xdg-open
naprawdę powinien być w stanie to zrobić domyślnie ... wystarczy przekazać listę argumentów do programu. Przyjdź na freedesktop.org ludzi! :-)Odpowiedzi:
W rzeczy samej. Aby obejść ten problem, możesz użyć powłoki:
Lub, jeśli chcesz, aby był bardziej niezawodny, spróbuj
źródło
find: paths must precede expression: -
)..
i dostałem ten sam komunikat o błędzie. W innym katalogu dostaję sięxdg-open: unexpected argument './foo.mp3'
z lub bez.
.Możesz spróbować:
ls *.mp3
wyświetli listę wszystkich plików mp3 z bieżącego katalogu, każdy w osobnym wierszu, a wynik zostanie przesłany dowhile
pętli, która odczyta zawartość każdego wiersza i otworzy tę zawartość (w tym przypadku jest to nazwa pliku mp3 ) w domyślnej aplikacji.źródło
-r
flagę. Myślę, że jest to konieczne, aby poprawnie parsować pliki z `\ w nazwie.man read
też nie ma na liście żadnych flag! Podczas testowania nie pojawia się błąd, ale prawdopodobnie dlatego, że utworzyłemaaa
iaa\a
. W takim przypadkuxdg-open
po prostu próbuje otworzyćaaa
dwa razy, a nieaa\a
. (W porządku, robi się trochę skomplikowany, ale myślę, że kod powinien działać we wszystkich sytuacjach. Być możefind
jest to lepsza opcja, aby uniknąć ograniczeńls
iread
.) Ponadto, w jaki sposób może siać spustoszenie dokładnie? Czy to nie tylko parsuje wyjściels
?man read
odnosi się do odczytanej funkcji C (sekcja 2 man). Toread
jest wbudowane polecenie bash, więc powinieneś zajrzećman bash
gdzieś w linii 4632. @Sparhawk - dzięki za edycję.Napisałem mały skrypt
/usr/local/bin/o
, chociaż możesz go po prostu wywołać/usr/local/bin/xdg-open
i zastąpić domyślną komendą, jeśli chcesz (zakładając, że$PATH
dajesz jej priorytet). Ponadto, jeśli nie zostanie podany żaden argument, skrypt otworzy zamiast tego bieżący katalog.Jeśli nie chcesz otwierać bieżącego katalogu bez argumentów, zachowuje to domyślne zachowanie, tzn. Pokazuje użycie.
Uwaga: jest to niezależne od zdolności domyślnego programu do analizowania wielu argumentów, ale zamiast tego wywoła każde polecenie raz dla każdego argumentu. Nie sądzę, aby istniało eleganckie rozwiązanie tego problemu, ponieważ użytkownicy mogą chcieć
xdg-open
różnego rodzaju plików, a niektóre polecenia i tak nie przyjmują wielu argumentów.źródło
Napisałem ten
bash
skrypt, aby opisać wszystkie przypadki użycia, o których mogłem pomyśleć:Funkcje:
max=20 open $(ls -Q)
all=1 open $(ls -Q)
źródło
Oto jedna linijka:
Ponieważ mam zainstalowaną VLC (i domyślnie dla mp3), to otwiera dla mnie wszystkie pliki mp3 w katalogu z VLC. Nie jest to żaden rodzaj „ uniwersalnego rozwiązania dla wszystkich dziwnych przypadków ”, ale powinno działać.
Wyjaśnienie:
ls -AQp
wyświetla listę „prawie wszystkich” plików, cytując nazwy plików i dodając ukośnik do nazw katalogów. Wymień-p
się--file-type
, jeśli chcesz, aby wykluczyć dowiązania jako dobrze. Cytowanie w przypadku spacji w nazwach plików.grep "\.mp3\"$"
wybiera tylko pliki, które kończą się „.mp3” (plus podwójny cudzysłów).xargs
przekierowuje całą partię do programu, który następuje po powrocie podpowłoki.podpowłoka:
xdg-mime query default audio/mpeg
podaje domyślną nazwę aplikacji w formacie „app.desktop” dla plików, których mime toaudio/mpeg
. Możesz sprawdzić typ mime dla dowolnego pliku w swoim środowisku za pomocąxdg-mime query filetype /path/to/file
. Mam plik „audio / mpeg” do pliku mp3.grep -oP '.+(?=\.desktop)'
pobiera „aplikację” z „app.desktop”.Jeśli zamierzasz używać go bardzo często w systemie, który niewiele się zmieni, możesz go skrócić do tego:
Gdzie zamieniasz
default_app
na rzeczywisty program, który otwiera się z plikami. Możesz dowiedzieć się, jak się nazywa:xdg-open
nie będzie działać z tym problemem, ponieważ z założenia przyjmuje tylko jeden argument. Jeśli używaszxargs -n1
, prawdopodobnie trafisz w ścianę dzięki temu, że wynikowa aplikacja może otworzyć każdy plik w nowej instancji, co może stać się brzydkie na więcej niż jeden sposób.źródło
Możesz użyć tych poleceń
tylko jeśli Twój odtwarzacz muzyki obsługuje wiele plików jako argumenty wiersza poleceń. Zamień
vlc
na wybrany odtwarzacz muzyki.Działa to z RhythmBox i VLC w moich testach.
źródło
find
... nie-exec
uruchamia poszczególnych poleceń dla każdego pliku? A także, jeśli twój odtwarzacz muzyki obsługuje wiele plików jako argumenty wiersza poleceń, możesz po prostu użyćvlc *.mp3
.\+
at the endfind
jeśli i tak zamierzasz dokonać twardego koduvlc
. (Pytanie sugeruje, że wszystkie znajdują się w jednym katalogu.)+
, nie ma potrzeby\+
.Użyj tego polecenia do plików mp3, jeśli chcesz otwierać pliki w VLC.
Uwaga: Użyj,
cvlc
aby użyć VLC bez interfejsu.źródło