Я пытался открыть все мои файлы .mp3 из папки, используя, xdg-open
но я обнаружил, что он открывает только один! Поэтому я немного искал, но такого вопроса не было! Я нашел «evince», но, видимо, он открывает текстовые файлы, и gnome-open также открывает один файл.
Я хочу открыть все файлы одного формата в папке из терминала. Я новичок в Ubuntu, поэтому, пожалуйста, объясните немного больше.
xdg-open
действительно должен быть в состоянии сделать это по умолчанию ... просто передайте список аргументов программе. Заходите на freedesktop.org люди! :-)Ответы:
В самом деле. Вы можете использовать оболочку, чтобы обойти это, как это:
Или, если вы хотите более надежный, попробуйте
источник
find: paths must precede expression: -
)..
и получил то же самое сообщение об ошибке. В другой каталог я попадаюxdg-open: unexpected argument './foo.mp3'
с или без.
.Можешь попробовать:
ls *.mp3
перечислит все mp3-файлы из текущего каталога, каждый в отдельной строке, и результат будет передан вwhile
цикл, который прочитает содержимое каждой строки, и он откроет это содержимое (в данном случае это имя mp3-файла). ) в приложении по умолчанию.источник
-r
флаг. Я думаю, что это необходимо для правильного разбора файлов с `\` в их имени.man read
тоже нет флагов! Я не получаю ошибку в моем тестировании, но это, вероятно, потому что я создалaaa
иaa\a
. В этом случаеxdg-open
просто пытаетсяaaa
дважды открыть , а нетaa\a
. (Хорошо, это становится немного запутанным, но я думаю, что код должен работать для всех ситуаций. Возможноfind
, это лучший вариант, чтобы избежать ограниченийls
иread
.) Кроме того, как он может привести к хаосу точно? Разве это не собирается только анализировать выводls
?man read
ссылается на прочитанную функцию C (раздел 2 человека). Этоread
встроенная команда bash, поэтому вы должны заглянутьman bash
куда-нибудь в строку 4632. @Sparhawk - спасибо за редактирование.Я написал небольшой скрипт
/usr/local/bin/o
, хотя вы можете просто вызвать его/usr/local/bin/xdg-open
и заменить команду по умолчанию, если хотите (при условии, что ваша команда$PATH
отдает ей приоритет). Также, если аргумент не указан, этот скрипт откроет текущий каталог.Если вы не хотите открывать текущий каталог без аргументов, это сохраняет поведение по умолчанию, то есть показывает использование.
Примечание: это не зависит от способности программы по умолчанию анализировать несколько аргументов, но вместо этого она будет вызывать каждую команду один раз для каждого аргумента. Я не думаю, что есть элегантный способ обойти это, так как пользователи могут захотеть использовать
xdg-open
разные типы файлов, и некоторые команды все равно не будут принимать несколько аргументов.источник
Я написал этот
bash
сценарий, чтобы охватить все возможные варианты использования:Функции:
max=20 open $(ls -Q)
all=1 open $(ls -Q)
источник
Вот одна строка:
Поскольку у меня установлен VLC (и по умолчанию для mp3s), это открывает все mp3-файлы в каталоге с VLC для меня. Это не какой-то « универсальный способ решить все и работать в каждом безумном случае », но он должен работать.
Объяснение:
ls -AQp
перечисляет «почти все» файлы, цитируя имена файлов и добавляя косую черту к именам каталогов. Замените-p
на,--file-type
если вы также хотите исключить символические ссылки. Цитирование в случае пробелов в именах файлов.grep "\.mp3\"$"
выбирает только файлы, оканчивающиеся на «.mp3» (плюс двойные кавычки).xargs
перенаправляет весь лот на программирование, которое возвращается после подоболочки.подоболочка:
xdg-mime query default audio/mpeg
дает имя приложения по умолчанию в формате "app.desktop" для файлов с mimeaudio/mpeg
. Вы можете проверить mimetype для любого файла в вашей среде с помощьюxdg-mime query filetype /path/to/file
. Я получил "аудио / MPEG" для mp3-файла.grep -oP '.+(?=\.desktop)'
получает "app" из "app.desktop".Если вы собираетесь использовать его очень часто в системе, которая не сильно изменится, вы можете сократить его до следующего:
Где вы замените
default_app
на фактическую программу, которая открывается с файлами. Вы можете выяснить его имя с этим:xdg-open
не будет работать с этой проблемой, потому что она принимает только один аргумент по замыслу. Еслиxargs -n1
вы используете , вы, вероятно, будете в восторге от того, что рассматриваемое приложение может открывать каждый файл в новом экземпляре, что может стать уродливым несколькими способами.источник
Вы можете использовать эти команды
только если ваш музыкальный проигрыватель поддерживает несколько файлов в качестве аргументов командной строки. Замените
vlc
на ваш музыкальный плеер по вашему выбору.Это работает с RhythmBox и VLC в моем тестировании.
источник
find
...-exec
запускает отдельные команды для каждого файла? А также, если ваш музыкальный проигрыватель поддерживает несколько файлов в качестве аргументов командной строки, вы можете просто использоватьvlc *.mp3
.\+
в концеfind
если вы всеvlc
равно собираетесь использовать жесткий код. (Вопрос предполагает, что все они находятся в одном каталоге.)+
достаточно, не нужно\+
.Используйте эту команду для mp3-файлов, если вы хотите открыть файлы в VLC.
Примечание. Используйте
cvlc
для использования VLC без интерфейса.источник