Ich habe versucht, alle meine MP3-Dateien aus einem Ordner mit zu öffnen, xdg-open
aber ich habe herausgefunden, dass nur eine geöffnet wird! Also habe ich ein wenig gesucht, aber es gab keine solche Frage! Ich fand "evince", aber anscheinend öffnet es Textdateien und gnome-open öffnet auch eine Datei.
Ich möchte alle Dateien des gleichen Formats in einem Ordner vom Terminal aus öffnen. Ich bin neu in Ubuntu, bitte erklären Sie etwas mehr.
xdg-open
sollte dies wirklich standardmäßig können ... Übergeben Sie einfach die Argumentliste an das Programm. Komm schon freedesktop.org Leute! :-)Antworten:
Tatsächlich. Sie könnten Shell verwenden, um dies zu umgehen:
Oder versuchen Sie es, wenn Sie es robuster möchten
quelle
find: paths must precede expression: -
)..
und habe die gleiche Fehlermeldung erhalten. In einem anderen Verzeichnis bekomme ichxdg-open: unexpected argument './foo.mp3'
mit oder ohne.
.Du kannst es versuchen:
ls *.mp3
Wenn Sie alle MP3-Dateien aus dem aktuellen Verzeichnis auflisten, jede in einer eigenen Zeile, wird die Ausgabe an einewhile
Schleife weitergeleitet, die den Inhalt jeder Zeile liest, und dieser Inhalt wird geöffnet (in diesem Fall der Name einer MP3-Datei) ) in seiner Standardanwendung.quelle
-r
Flagge hinzugefügt . Ich denke, dies ist notwendig, um Dateien mit einem `\` im Namen korrekt zu analysieren.man read
hat auch überhaupt keine Flaggen aufgelistet! Ich bekomme keinen Fehler beim Testen, aber das liegt wahrscheinlich daran, dass ichaaa
und erstellt habeaa\a
. In diesem Fall wirdxdg-open
nur versucht,aaa
zweimal zu öffnen , und nichtaa\a
. (Okay, es wird ein bisschen verworren, aber ich denke, Code sollte in allen Situationen funktionieren. Vielleichtfind
ist es eine bessere Option, um die Einschränkungen vonls
und zu vermeidenread
.) Und wie kann es genau Chaos anrichten? Wird es nicht nur die Ausgabe von analysierenls
?man read
verweist auf die gelesene C-Funktion (Abschnitt 2 des Mannes). Diesread
ist ein eingebauter Bash-Befehl, daher sollten Sieman bash
irgendwo in Zeile 4632 nachsehen. @Sparhawk - danke für die Bearbeitung.Ich habe ein kleines Skript geschrieben
/usr/local/bin/o
, obwohl Sie es einfach aufrufen/usr/local/bin/xdg-open
und den Standardbefehl ersetzen können, wenn Sie möchten (vorausgesetzt, Sie$PATH
geben ihm Priorität). Wenn kein Argument angegeben wird, öffnet dieses Skript stattdessen das aktuelle Verzeichnis.Wenn Sie das aktuelle Verzeichnis nicht ohne Argument öffnen möchten, wird das Standardverhalten beibehalten, dh die Verwendung wird angezeigt.
Hinweis: Dies ist unabhängig von der Fähigkeit des Standardprogramms, mehrere Argumente zu analysieren. Stattdessen wird jeder Befehl für jedes Argument einmal aufgerufen. Ich glaube nicht, dass es einen eleganten Weg gibt, da Benutzer möglicherweise
xdg-open
verschiedene Arten von Dateien verwenden möchten und einige Befehle ohnehin nicht mehrere Argumente annehmen.quelle
Ich habe dieses
bash
Skript geschrieben, um alle Anwendungsfälle abzudecken, die mir einfallen:Eigenschaften:
max=20 open $(ls -Q)
all=1 open $(ls -Q)
quelle
Hier ist ein Einzeiler:
Da ich VLC installiert habe (und standardmäßig für MP3s), werden für mich alle MP3-Dateien in einem Verzeichnis mit VLC geöffnet. Dies ist keine Art von " universellem Lösen von allem und Arbeiten in jedem verdammten Fall ", aber es sollte funktionieren.
Erläuterung:
ls -AQp
listet "fast alle" Dateien auf, zitiert Dateinamen und fügt Schrägstriche an Namen von Verzeichnissen an. Ersetzen Sie-p
durch,--file-type
wenn Sie auch Symlinks ausschließen möchten. Zitieren bei Leerzeichen in Dateinamen.grep "\.mp3\"$"
Wählt nur Dateien aus, die mit ".mp3" enden (plus doppeltes Anführungszeichen).xargs
Leitet das gesamte Los an das Programm um, das die folgende Unterschale zurückgibt.Unterschale:
xdg-mime query default audio/mpeg
Gibt den Namen der Standard-App im Format "app.desktop" für Dateien an, deren MIME istaudio/mpeg
. Sie können den Mimetyp für jede Datei in Ihrer Umgebung mit überprüfenxdg-mime query filetype /path/to/file
. Ich habe "Audio / MPEG" für MP3-Datei.grep -oP '.+(?=\.desktop)'
Ruft die "App" von "app.desktop" ab.Wenn Sie es sehr häufig in einem System verwenden, das sich nicht wesentlich ändert, sollten Sie es folgendermaßen kürzen:
Wo Sie durch
default_app
das eigentliche Programm ersetzen , das mit den Dateien geöffnet wird. Sie können seinen Namen damit herausfinden:xdg-open
funktioniert nicht mit diesem Problem, da es nur ein Argument von Entwurf akzeptiert. Wenn Sie verwendenxargs -n1
, werden Sie wahrscheinlich damit an die Wand stoßen, dass die resultierende fragliche App möglicherweise jede Datei in einer neuen Instanz öffnet, was in mehr als einer Hinsicht hässlich werden kann.quelle
Sie können diese Befehle verwenden
Nur wenn Ihr Musik-Player mehrere Dateien als Befehlszeilenargumente unterstützt. Ersetzen Sie ihn
vlc
durch einen Musikplayer Ihrer Wahl.Dies funktioniert mit RhythmBox und VLC in meinen Tests.
quelle
find
...-exec
einzelne Befehle für jede Datei aus? Wenn Ihr Musik-Player mehrere Dateien als Befehlszeilenargumente unterstützt, können Sie diese auch verwendenvlc *.mp3
.\+
am Endefind
wenn Sievlc
trotzdem Hardcode verwenden . (Die Frage legt nahe, dass sie alle in einem Verzeichnis sind.)+
ist genug, keine Notwendigkeit für\+
.Verwenden Sie diesen Befehl für MP3-Dateien, wenn Sie Dateien in VLC öffnen möchten.
Hinweis: Verwenden Sie diese Option
cvlc
, um VLC ohne Schnittstelle zu verwenden.quelle